Udostępnij za pomocą


Omówienie wyzwalacza RabbitMQ dla usługi Azure Functions

Użyj wyzwalacza RabbitMQ, aby odpowiedzieć na komunikaty z kolejki RabbitMQ.

Uwaga

Powiązania RabbitMQ są w pełni obsługiwane tylko w planach Elastic Premium i Dedicated (App Service). Plany Flex Consumption i Consumption nie są jeszcze obsługiwane.

Powiązania RabbitMQ nie są obsługiwane przez środowisko uruchomieniowe usługi Azure Functions w wersji 1.x.

Aby uzyskać informacje na temat konfiguracji i konfiguracji, zobacz omówienie.

Przykład

Funkcję języka C# można utworzyć przy użyciu jednego z następujących trybów języka C#:

  • Model izolowanego procesu roboczego: skompilowana funkcja języka C#, która jest uruchamiana w procesie roboczym izolowanym od środowiska uruchomieniowego. Proces izolowanego procesu roboczego jest wymagany do obsługi funkcji języka C# działających w długoterminowych wersjach pomocy technicznej (LTS) i innych niż LTS dla platformy .NET i programu .NET Framework.
  • Model przetwarzania: skompilowana funkcja języka C#, która działa w tym samym procesie co środowisko uruchomieniowe usługi Azure Functions.
  • Skrypt języka C#: używany głównie podczas tworzenia funkcji języka C# w witrynie Azure Portal.

Ważne

Wsparcie zostanie zakończone dla modelu procesu 10 listopada 2026 r. Zdecydowanie zalecamy przeprowadzenie migracji aplikacji do izolowanego modelu procesu roboczego w celu uzyskania pełnej obsługi.

[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
    FunctionContext context)
{
    var logger = context.GetLogger(nameof(RabbitMQFunction));

    logger.LogInformation(item);

    var message = $"Output message created at {DateTime.Now}";
    return message;
}

Poniższa funkcja Java używa @RabbitMQTrigger adnotacji z typów Java RabbitMQ, aby opisać konfigurację wyzwalacza kolejki RabbitMQ. Funkcja pobiera komunikat umieszczony w kolejce i dodaje go do dzienników.

@FunctionName("RabbitMQTriggerExample")
public void run(
    @RabbitMQTrigger(connectionStringSetting = "rabbitMQConnectionAppSetting", queueName = "queue") String input,
    final ExecutionContext context)
{
    context.getLogger().info("Java HTTP trigger processed a request." + input);
}

W poniższym przykładzie pokazano powiązanie wyzwalacza RabbitMQ w pliku function.json i funkcję JavaScript, która używa powiązania. Funkcja odczytuje i rejestruje komunikat RabbitMQ.

Oto dane powiązania w pliku function.json :

{​​
    "bindings": [
        {​​
            "name": "myQueueItem",
            "type": "rabbitMQTrigger",
            "direction": "in",
            "queueName": "queue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting"
        }​​
    ]
}​​

Oto kod skryptu JavaScript:

module.exports = async function (context, myQueueItem) {​​
    context.log('JavaScript RabbitMQ trigger function processed work item', myQueueItem);
}​​;

W poniższym przykładzie pokazano, jak odczytać komunikat kolejki RabbitMQ za pośrednictwem wyzwalacza.

Powiązanie RabbitMQ jest definiowane w function.json , w którym typ jest ustawiony na RabbitMQTrigger.

{​​
    "scriptFile": "__init__.py",
    "bindings": [
        {​​
            "name": "myQueueItem",
            "type": "rabbitMQTrigger",
            "direction": "in",
            "queueName": "queue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting"
        }​​
    ]
}​​
import logging
import azure.functions as func

def main(myQueueItem) -> None:
    logging.info('Python RabbitMQ trigger function processed a queue item: %s', myQueueItem)

Przykłady programu PowerShell nie są obecnie dostępne.

Atrybuty

Zarówno izolowany proces roboczy , jak i biblioteki języka C# w procesie używają RabbitMQTriggerAttribute do definiowania funkcji, gdzie określone właściwości atrybutu zależą od wersji rozszerzenia.

Konstruktor atrybutu akceptuje następujące parametry:

Parametr Opis
NazwaKolejki Nazwa kolejki, z której mają być odbierane komunikaty.
Nazwa hosta Ten parametr nie jest już obsługiwany i jest ignorowany. Zostanie on usunięty w przyszłej wersji.
ConnectionStringSetting Nazwa ustawienia aplikacji zawierającego parametry połączenia serwera RabbitMQ. To ustawienie przyjmuje tylko nazwę klucza ustawienia aplikacji. Nie można bezpośrednio ustawić wartości parametrów połączenia. Aby uzyskać więcej informacji, zobacz Połączenia.
UserNameSetting Ten parametr nie jest już obsługiwany i jest ignorowany. Zostanie on usunięty w przyszłej wersji.
PasswordSetting Ten parametr nie jest już obsługiwany i jest ignorowany. Zostanie on usunięty w przyszłej wersji.
Port Pobiera lub ustawia używany port. Wartość domyślna to 0, co wskazuje domyślne ustawienie portu klienta RabbitMQ.5672

Adnotacje

Adnotacja RabbitMQTrigger umożliwia utworzenie funkcji uruchamianej po utworzeniu komunikatu RabbitMQ.

Adnotacja obsługuje następujące opcje konfiguracji:

Parametr Opis
queueName Nazwa kolejki, z której mają być odbierane komunikaty.
connectionStringSetting Nazwa ustawienia aplikacji zawierającego parametry połączenia serwera RabbitMQ. To ustawienie przyjmuje tylko nazwę klucza ustawienia aplikacji. Nie można bezpośrednio ustawić wartości parametrów połączenia. Aby uzyskać więcej informacji, zobacz Połączenia.
disableCertificateValidation Wartość logiczna, którą można ustawić, wskazującą true , że walidacja certyfikatu powinna być wyłączona. Wartość domyślna to false. Niezalecane w środowisku produkcyjnym. Nie ma zastosowania, gdy protokół SSL jest wyłączony.

Konfigurowanie

W poniższej tabeli opisano właściwości konfiguracji powiązania ustawione w pliku function.json .

właściwość function.json Opis
typ Musi być ustawiona wartość RabbitMQTrigger.
kierunek Musi być ustawiona wartość in.
nazwa Nazwa zmiennej reprezentującej kolejkę w kodzie funkcji.
queueName Nazwa kolejki, z której mają być odbierane komunikaty.
connectionStringSetting Nazwa ustawienia aplikacji zawierającego parametry połączenia serwera RabbitMQ. To ustawienie przyjmuje tylko nazwę klucza ustawienia aplikacji. Nie można bezpośrednio ustawić wartości parametrów połączenia. Aby uzyskać więcej informacji, zobacz Połączenia.
disableCertificateValidation Wartość logiczna, którą można ustawić, wskazującą true , że walidacja certyfikatu powinna być wyłączona. Wartość domyślna to false. Niezalecane w środowisku produkcyjnym. Nie ma zastosowania, gdy protokół SSL jest wyłączony.

Podczas tworzenia aplikacji lokalnie dodaj ustawienia aplikacji w pliku local.settings.json w kolekcji Values .

Zobacz sekcję Przykład, aby zapoznać się z kompletnymi przykładami.

Użycie

Typ parametru obsługiwany przez wyzwalacz RabbitMQ zależy od używanej modalności języka C#.

Powiązania RabbitMQ obsługują obecnie tylko typy obiektów ciągów i możliwe do serializacji podczas uruchamiania w izolowanym procesie.

Komunikat kolejki jest dostępny za pośrednictwem lokalizacji, w context.bindings.<NAME> której <NAME> jest zgodna z nazwą zdefiniowaną w function.json. Jeśli ładunek to JSON, wartość jest deserializowana do obiektu.

Connections

Ważne

Powiązanie RabbitMQ nie obsługuje uwierzytelniania firmy Microsoft ani tożsamości zarządzanych. Za pomocą usługi Azure Key Vault można centralnie zarządzać parametry połączenia RabbitMQ. Aby dowiedzieć się więcej, zobacz Zarządzanie połączeniami.

Począwszy od wersji 2.x rozszerzenia , hostNameuserNameSettingi passwordSetting nie są już obsługiwane w celu zdefiniowania połączenia z serwerem RabbitMQ. Zamiast tego należy użyć polecenia connectionStringSetting.

Właściwość connectionStringSetting może akceptować tylko nazwę pary klucz-wartość w ustawieniach aplikacji. Nie można bezpośrednio ustawić wartości parametrów połączenia w powiązaniu.

Na przykład po ustawieniu connectionStringSettingrabbitMQConnection wartości na wartość w definicji powiązania aplikacja funkcji musi mieć ustawienie aplikacji o nazwie rabbitMQConnection , które zwraca wartość połączenia, na przykład amqp://myuser:***@contoso.rabbitmq.example.com:5672 lub odwołanie do usługi Azure Key Vault.

W przypadku uruchamiania lokalnego musisz również mieć wartość connectionStringSetting klucza zdefiniowaną w pliku local.settings.json . W przeciwnym razie aplikacja nie może nawiązać połączenia z usługą z komputera lokalnego i wystąpi błąd.

Kolejki utraconych listów

Kolejki utraconych listów i wymiany nie mogą być kontrolowane ani konfigurowane z wyzwalacza RabbitMQ. Aby użyć kolejek utraconych komunikatów, należy wstępnie skonfigurować kolejkę używaną przez wyzwalacz w narzędziu RabbitMQ. Zapoznaj się z dokumentacją RabbitMQ.

Włączanie skalowania środowiska uruchomieniowego

Aby wyzwalacz RabbitMQ był skalowany w poziomie do wielu wystąpień, należy włączyć ustawienie Monitorowanie skalowania w czasie wykonywania.

W portalu to ustawienie można znaleźć w obszarze >dla aplikacji funkcji.

Przełącznik sieci wirtualnej

W interfejsie wiersza polecenia platformy Azure można włączyć monitorowanie skalowania w czasie wykonywania przy użyciu tego polecenia:

az resource update -resource-group <RESOURCE_GROUP> -name <APP_NAME>/config/web \
    --set properties.functionsRuntimeScaleMonitoringEnabled=1 \
    --resource-type Microsoft.Web/sites

Monitorowanie punktu końcowego RabbitMQ

Aby monitorować kolejki i wymiany dla określonego punktu końcowego RabbitMQ:

Powiązany artykuł