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 . |
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 |
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.
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.
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:
- Włączanie wtyczki zarządzania RabbitMQ
- Przejdź do http://{node-hostname}:15672 i zaloguj się przy użyciu nazwy użytkownika i hasła.