Omówienie powiązania wyjściowego 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 powiązania danych wyjściowych RabbitMQ, aby wysyłać komunikaty do 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 @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
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.