Omówienie powiązania wyjściowego RabbitMQ dla usługi Azure Functions
Użyj powiązania danych wyjściowych RabbitMQ, aby wysyłać komunikaty do 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 @RabbitMQOutput
adnotacji z typów Java RabbitMQ, aby opisać konfigurację powiązania wyjściowego kolejki RabbitMQ. Funkcja wysyła komunikat do kolejki RabbitMQ po wyzwoleniu przez timerTrigger co 5 minut.
@FunctionName("RabbitMQOutputExample")
public void run(
@TimerTrigger(name = "keepAliveTrigger", schedule = "0 */5 * * * *") String timerInfo,
@RabbitMQOutput(connectionStringSetting = "rabbitMQConnectionAppSetting", queueName = "hello") OutputBinding<String> output,
final ExecutionContext context) {
output.setValue("Some string");
}
Poniższy przykład przedstawia powiązanie wyjściowe RabbitMQ w pliku function.json i funkcję JavaScript, która używa powiązania. Funkcja odczytuje komunikat z wyzwalacza HTTP i zwraca go do kolejki RabbitMQ.
Oto dane powiązania w pliku function.json :
{
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"authLevel": "function",
"name": "input",
"methods": [
"get",
"post"
]
},
{
"type": "rabbitMQ",
"name": "outputMessage",
"queueName": "outputQueue",
"connectionStringSetting": "rabbitMQConnectionAppSetting",
"direction": "out"
}
]
}
Oto kod JavaScript:
module.exports = async function (context, input) {
context.bindings.outputMessage = input.body;
};
W poniższym przykładzie pokazano powiązanie wyjściowe RabbitMQ w pliku function.json i funkcję języka Python, która używa powiązania. Funkcja odczytuje komunikat z wyzwalacza HTTP i zwraca go do kolejki RabbitMQ.
Oto dane powiązania w pliku function.json :
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "$return"
},
{
"type": "rabbitMQ",
"name": "outputMessage",
"queueName": "outputQueue",
"connectionStringSetting": "rabbitMQConnectionAppSetting",
"direction": "out"
}
]
}
W _init_.py:
import azure.functions as func
def main(req: func.HttpRequest, outputMessage: func.Out[str]) -> func.HttpResponse:
input_msg = req.params.get('message')
outputMessage.set(input_msg)
return 'OK'
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 RabbitMQOutput
umożliwia utworzenie funkcji uruchamianej po utworzeniu komunikatu RabbitMQ.
Adnotacja obsługuje następujące ustawienia konfiguracji:
Ustawienie | 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 |
Zobacz przykład powiązania wyjściowego, aby uzyskać więcej szczegółów.
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ść RabbitMQ . |
direction | Musi być ustawiona wartość out . |
name | Nazwa zmiennej reprezentującej kolejkę w kodzie funkcji. |
queueName | Nazwa kolejki do wysyłania komunikatów. |
nazwa hosta | Nazwa hosta kolejki, na przykład 10.26.45.210. Ignorowane w przypadku używania polecenia connectStringSetting . |
userName | 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 . |
hasło | Nazwa ustawienia aplikacji zawierającego hasło dostępu do kolejki, takie jak UserNameSetting: "< UserNameFromSettings >". 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 zamiast za pomocą ustawienia aplikacji w pliku local.settings.json . Na przykład po ustawieniu connectionStringSetting: "rabbitMQConnection" zarówno w local.settings.json , jak 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 wersji środowiska uruchomieniowego usługi Functions, wersji pakietu rozszerzenia i używanej modalności języka C#.
Powiązania RabbitMQ obsługują obecnie tylko typy obiektów z możliwością serializacji i ciągów podczas uruchamiania w izolowanym procesie roboczym.
Użyj następujących typów parametrów dla powiązania wyjściowego:
-
byte[]
— Jeśli wartość parametru ma wartość null, gdy funkcja zakończy działanie, funkcja nie tworzy komunikatu. -
string
— Jeśli wartość parametru ma wartość null, gdy funkcja zakończy działanie, funkcja nie tworzy komunikatu. -
POJO
— Jeśli wartość parametru nie jest sformatowana jako obiekt Java, zostanie wyświetlony błąd.
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.