Omówienie wyzwalacza RabbitMQ dla usługi Azure Functions

Uwaga

Powiązania RabbitMQ są w pełni obsługiwane tylko w przypadku planów Premium i Dedykowanych . Użycie nie jest obsługiwane.

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

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# uruchomionych w wersjach LTS i innych niż LTS platformy .NET oraz programu .NET Framework.
  • Model przetwarzania: skompilowana funkcja języka C#, która działa w tym samym procesie co środowisko uruchomieniowe usługi 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)

Atrybuty

Biblioteki języka C# procesu roboczego zarówno w procesie przetwarzania procesowego, jak i izolowanego, używają atrybutu do zdefiniowania funkcji. Zamiast tego skrypt języka C# używa pliku konfiguracji function.json.

Konstruktor atrybutu przyjmuje następujące parametry:

Parametr Opis
Queuename Nazwa kolejki, z której mają być odbierane komunikaty.
Nazwa hosta Nazwa hosta kolejki, na przykład 10.26.45.210. Ignorowane w przypadku używania polecenia ConnectStringSetting.
UserNameSetting Nazwa ustawienia aplikacji zawierającego nazwę użytkownika, aby uzyskać dostęp do kolejki, na przykład UserNameSetting: "%< UserNameFromSettings >%". Ignorowane w przypadku używania polecenia ConnectStringSetting.
PasswordSetting Nazwa ustawienia aplikacji zawierającego hasło umożliwiające dostęp do kolejki, na przykład PasswordSetting: "%< PasswordFromSettings >%". Ignorowane w przypadku używania polecenia ConnectStringSetting.
Połączenie ionStringSetting Nazwa ustawienia aplikacji zawierającego kolejkę komunikatów RabbitMQ parametry połączenia. Wyzwalacz nie będzie działać po określeniu parametry połączenia bezpośrednio za pomocą ustawienia aplikacji. Jeśli na przykład ustawiono ConnectionStringSetting: "rabbitMQConnection"wartość , w local.settings.json i w aplikacji funkcji potrzebne jest ustawienie takie jak "RabbitMQConnection" : "< ActualConnectionstring >".
Port Pobiera lub ustawia używany port. Wartość domyślna to 0, co wskazuje domyślne ustawienie portu klienta RabbitMQ.5672

W bibliotekach klas języka C# użyj atrybutu RabbitMQTrigger .

RabbitMQTrigger Oto atrybut w sygnaturze metody dla izolowanej biblioteki procesów roboczych:

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

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.
Nazwa hosta Nazwa hosta kolejki, na przykład 10.26.45.210. Ignorowane w przypadku używania polecenia ConnectStringSetting.
userNameSetting Nazwa ustawienia aplikacji zawierającego nazwę użytkownika, aby uzyskać dostęp do kolejki, na przykład UserNameSetting: "%< UserNameFromSettings >%". Ignorowane w przypadku używania polecenia ConnectStringSetting.
passwordSetting Nazwa ustawienia aplikacji zawierającego hasło umożliwiające dostęp do kolejki, na przykład PasswordSetting: "%< PasswordFromSettings >%". Ignorowane w przypadku używania polecenia ConnectStringSetting.
connectionStringSetting Nazwa ustawienia aplikacji zawierającego kolejkę komunikatów RabbitMQ parametry połączenia. Wyzwalacz nie będzie działać po określeniu parametry połączenia bezpośrednio za pomocą ustawienia aplikacji. Jeśli na przykład ustawiono ConnectionStringSetting: "rabbitMQConnection"wartość , w local.settings.json i w aplikacji funkcji potrzebne jest ustawienie takie jak "RabbitMQConnection" : "< ActualConnectionstring >".
port Pobiera lub ustawia używany port. Wartość domyślna to 0, co wskazuje domyślne ustawienie portu klienta RabbitMQ.5672

Konfigurowanie

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

właściwość function.json opis
type Musi być ustawiona wartość RabbitMQTrigger.
direction Musi być ustawiona wartość in.
name Nazwa zmiennej reprezentującej kolejkę w kodzie funkcji.
Queuename Nazwa kolejki, z której mają być odbierane komunikaty.
Nazwa hosta Nazwa hosta kolejki, na przykład 10.26.45.210. Ignorowane w przypadku używania polecenia connectStringSetting.
userNameSetting Nazwa ustawienia aplikacji zawierającego nazwę użytkownika, aby uzyskać dostęp do kolejki, na przykład UserNameSetting: "%< UserNameFromSettings >%". Ignorowane w przypadku używania polecenia connectStringSetting.
passwordSetting Nazwa ustawienia aplikacji zawierającego hasło umożliwiające dostęp do kolejki, na przykład PasswordSetting: "%< PasswordFromSettings >%". Ignorowane w przypadku używania polecenia connectStringSetting.
connectionStringSetting Nazwa ustawienia aplikacji zawierającego kolejkę komunikatów RabbitMQ parametry połączenia. Wyzwalacz nie będzie działać po określeniu parametry połączenia bezpośrednio za pomocą ustawienia aplikacji. Jeśli na przykład ustawiono connectionStringSetting: "rabbitMQConnection"wartość , w local.settings.json i w aplikacji funkcji potrzebne jest ustawienie takie jak "rabbitMQConnection" : "< ActualConnectionstring >".
port Pobiera lub ustawia używany port. Wartość domyślna to 0, co wskazuje domyślne ustawienie portu klienta RabbitMQ.5672

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.

Pełny przykład można znaleźć w przykładzie języka C#.

Zapoznaj się z adnotacjami języka Java.

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.

Zapoznaj się z przykładem języka Python.

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.

ustawienia host.json

W tej sekcji opisano ustawienia konfiguracji dostępne dla tego powiązania w wersjach 2.x i nowszych. Ustawienia w pliku host.json mają zastosowanie do wszystkich funkcji w wystąpieniu aplikacji funkcji. Poniższy przykładowy plik host.json zawiera tylko ustawienia wersji 2.x+ dla tego powiązania. Aby uzyskać więcej informacji na temat ustawień konfiguracji aplikacji funkcji w wersjach 2.x i nowszych, zobacz host.json dokumentacja usługi Azure Functions.

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            "prefetchCount": 100,
            "queueName": "queue",
            "connectionString": "amqp://user:password@url:port",
            "port": 10
        }
    }
}
Właściwości Domyślny opis
prefetchCount 30 Pobiera lub ustawia liczbę komunikatów, które odbiornik komunikatów może jednocześnie żądać i jest buforowany.
Queuename nie dotyczy Nazwa kolejki do odbierania komunikatów.
Parametry połączenia nie dotyczy Kolejka komunikatów RabbitMQ parametry połączenia. Parametry połączenia jest tutaj określony bezpośrednio, a nie za pośrednictwem ustawienia aplikacji.
port 0 (ignorowane w przypadku używania parametru connectionString) Pobiera lub ustawia używany port. Wartość domyślna to 0, co wskazuje domyślne ustawienie portu klienta rabbitmq: 5672.

Testowanie lokalne

Uwaga

Parametr connectionString ma pierwszeństwo przed ciągiem "hostName", "userName" i "password". Jeśli są one ustawione, właściwość connectionString zastąpi pozostałe dwa.

Jeśli testujesz lokalnie bez parametry połączenia, należy ustawić ustawienie "hostName" i "userName" i "password", jeśli ma to zastosowanie w sekcji "rabbitMQ" host.json:

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            ...
            "hostName": "localhost",
            "username": "userNameSetting",
            "password": "passwordSetting"
        }
    }
}
Właściwości Domyślny opis
Nazwa hosta nie dotyczy (ignorowane w przypadku używania parametru connectionString)
Nazwa hosta kolejki (np. 10.26.45.210)
userName nie dotyczy (ignorowane w przypadku używania parametru connectionString)
Nazwa dostępu do kolejki
hasło nie dotyczy (ignorowane w przypadku używania parametru connectionString)
Hasło umożliwiające dostęp do kolejki

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 Ustawienia środowiska uruchomieniowego funkcji konfiguracji>dla aplikacji funkcji.

Przełącznik sieci wirtualnej

W interfejsie wiersza polecenia można włączyć monitorowanie skalowania w czasie wykonywania przy użyciu następującego polecenia:

az resource update -g <resource_group> -n <function_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:

Następne kroki