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# 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
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.
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.