RabbitMQ-Ausgabebindung für Azure Functions – Übersicht
Hinweis
RabbitMQ-Bindungen werden nur mit den Plänen Premium und Dediziert vollständig unterstützt. Der Verbrauchstarif wird nicht unterstützt.
Verwenden Sie die RabbitMQ-Ausgabebindung, um Nachrichten an eine RabbitMQ-Warteschlange zu senden.
Informationen zu Setup- und Konfigurationsdetails finden Sie in der Übersicht.
Beispiel
Eine C#-Funktion kann mit einem der folgenden C#-Modi erstellt werden:
- Isoliertes Workermodell: Kompilierte C#-Funktion, die in einem Workerprozess ausgeführt wird, der von der Runtime isoliert ist. Ein isolierter Workerprozess ist erforderlich, um C#-Funktionen zu unterstützen, die in LTS- und Nicht-LTS-Versionen von .NET und .NET Framework ausgeführt werden.
- In-Process-Modell: Kompilierte C#-Funktion, die im gleichen Prozess wie die Functions-Runtime ausgeführt wird.
- C#-Skript: Wird hauptsächlich beim Erstellen von C#-Funktionen im Azure-Portal verwendet.
Wichtig
Die Unterstützung für das In-Process-Modell endet am 10. November 2026. Es wird dringend empfohlen, Ihre Apps zum isolierten Workermodell zu migrieren, um den vollständigen Support zu ermöglichen.
[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;
}
Die folgende Java-Funktion verwendet die @RabbitMQOutput
-Anmerkung aus den @RabbitMQOutput
, um die Konfiguration für eine Ausgabebindung der RabbitMQ-Warteschlange zu beschreiben. Die Funktion sendet eine Nachricht an die RabbitMQ-Warteschlange, wenn sie durch einen TimerTrigger alle 5 Minuten ausgelöst wird.
@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");
}
Das folgende Beispiel zeigt eine RabbitMQ-Ausgabebindung in einer Datei function.json sowie eine JavaScript-Funktion, die die Bindung verwendet. Die Funktion liest in der Nachricht von einem HTTP-Trigger und gibt sie in der RabbitMQ-Warteschlange aus.
Bindungsdaten in der Datei function.json:
{
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"authLevel": "function",
"name": "input",
"methods": [
"get",
"post"
]
},
{
"type": "rabbitMQ",
"name": "outputMessage",
"queueName": "outputQueue",
"connectionStringSetting": "rabbitMQConnectionAppSetting",
"direction": "out"
}
]
}
Der JavaScript-Code sieht wie folgt aus:
module.exports = async function (context, input) {
context.bindings.outputMessage = input.body;
};
Das folgende Beispiel zeigt eine RabbitMQ-Ausgabebindung in einer Datei function.json sowie eine Python-Funktion, die die Bindung verwendet. Die Funktion liest in der Nachricht von einem HTTP-Trigger und gibt sie in der RabbitMQ-Warteschlange aus.
Bindungsdaten in der Datei 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"
}
]
}
In _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'
Attributes
Von C#-Bibliotheken des Typs prozessintern und isolierter Workerprozess wird das Attribut verwendet, um die Funktion zu definieren. Vom C#-Skript wird stattdessen die Konfigurationsdatei function.json verwendet.
Vom Konstruktor des Attributs werden folgende Parameter akzeptiert:
Parameter | BESCHREIBUNG |
---|---|
QueueName | Name der Warteschlange, aus der Nachrichten empfangen werden sollen. |
HostName | Hostname der Warteschlange (z. B. 10.26.45.210). Wird bei Verwendung von ConnectStringSetting ignoriert. |
UserNameSetting | Name der App-Einstellung, die den Benutzernamen für den Zugriff auf die Warteschlange enthält (z. B. UserNameSetting: "%< UserNameFromSettings >%" ). Wird bei Verwendung von ConnectStringSetting ignoriert. |
PasswordSetting | Name der App-Einstellung, die das Kennwort für den Zugriff auf die Warteschlange enthält (z. B. PasswordSetting: "%< PasswordFromSettings >%" ). Wird bei Verwendung von ConnectStringSetting ignoriert. |
ConnectionStringSetting | Name der App-Einstellung, die die Verbindungszeichenfolge für die Warteschlange mit der RabbitMQ-Nachricht enthält. Der Trigger funktioniert nicht, wenn Sie die Verbindungszeichenfolge direkt angeben, anstatt eine App-Einstellung zu verwenden. Wenn Sie also beispielsweise ConnectionStringSetting: "rabbitMQConnection" festgelegt haben, benötigen Sie sowohl in local.settings.json als auch in Ihrer Funktions-App eine Einstellung wie "RabbitMQConnection" : "< ActualConnectionstring >" . |
Port | Ruft den verwendeten Port ab oder legt ihn fest. Der Standardwert (0) verweist auf die Standardporteinstellung 5672 des RabbitMQ-Clients. |
Verwenden Sie in C#-Klassenbibliotheken das RabbitMQTrigger-Attribut.
Hier sehen Sie ein Attribut vom Typ RabbitMQTrigger
in einer Methodensignatur für eine isolierte Workerprozessbibliothek:
[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
FunctionContext context)
{
Anmerkungen
Mit der RabbitMQOutput
-Anmerkung können Sie eine Funktion erstellen, die ausgeführt wird, wenn eine RabbitMQ-Nachricht erstellt wird.
Von der Anmerkung werden folgende Konfigurationseinstellungen unterstützt:
Einstellung | BESCHREIBUNG |
---|---|
queueName | Name der Warteschlange, aus der Nachrichten empfangen werden sollen. |
hostName | Hostname der Warteschlange (z. B. 10.26.45.210). Wird bei Verwendung von ConnectStringSetting ignoriert. |
userNameSetting | Name der App-Einstellung, die den Benutzernamen für den Zugriff auf die Warteschlange enthält (z. B. UserNameSetting: "%< UserNameFromSettings >%" ). Wird bei Verwendung von ConnectStringSetting ignoriert. |
passwordSetting | Name der App-Einstellung, die das Kennwort für den Zugriff auf die Warteschlange enthält (z. B. PasswordSetting: "%< PasswordFromSettings >%" ). Wird bei Verwendung von ConnectStringSetting ignoriert. |
connectionStringSetting | Name der App-Einstellung, die die Verbindungszeichenfolge für die Warteschlange mit der RabbitMQ-Nachricht enthält. Der Trigger funktioniert nicht, wenn Sie die Verbindungszeichenfolge direkt angeben, anstatt eine App-Einstellung zu verwenden. Wenn Sie also beispielsweise ConnectionStringSetting: "rabbitMQConnection" festgelegt haben, benötigen Sie sowohl in local.settings.json als auch in Ihrer Funktions-App eine Einstellung wie "RabbitMQConnection" : "< ActualConnectionstring >" . |
port | Ruft den verwendeten Port ab oder legt ihn fest. Der Standardwert (0) verweist auf die Standardporteinstellung 5672 des RabbitMQ-Clients. |
Weitere Details finden Sie im Beispiel für die Ausgabebindung.
Konfiguration
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie in der Datei function.json festlegen.
function.json-Eigenschaft | BESCHREIBUNG |
---|---|
type | Muss auf RabbitMQ festgelegt sein. |
direction | Muss auf out festgelegt sein. |
name | Der Name der Variablen, die die Warteschlange im Funktionscode darstellt. |
queueName | Name der Warteschlange, an die Nachrichten gesendet werden sollen. |
hostName | Hostname der Warteschlange (z. B. 10.26.45.210). Wird bei Verwendung von connectStringSetting ignoriert. |
userName | Name der App-Einstellung, die den Benutzernamen für den Zugriff auf die Warteschlange enthält (z. B. UserNameSetting: "< Benutzername aus den Einstellungen >"). Wird bei Verwendung von connectStringSetting ignoriert. |
password | Name der App-Einstellung, die das Kennwort für den Zugriff auf die Warteschlange enthält (z. B. UserNameSetting: "< Kennwort aus den Einstellungen >"). Wird bei Verwendung von connectStringSetting ignoriert. |
connectionStringSetting | Name der App-Einstellung, die die Verbindungszeichenfolge für die Warteschlange mit der RabbitMQ-Nachricht enthält. Der Trigger funktioniert nicht, wenn Sie die Verbindungszeichenfolge direkt angeben, anstatt eine App-Einstellung in local.settings.json zu verwenden. Wenn Sie also beispielsweise connectionStringSetting: "rabbitMQConnection" festgelegt haben, benötigen Sie sowohl in local.settings.json als auch in Ihrer Funktions-App eine Einstellung wie "rabbitMQConnection" : "< ActualConnectionstring >" . |
port | Ruft den verwendeten Port ab oder legt ihn fest. Der Standardwert (0) verweist auf die Standardporteinstellung 5672 des RabbitMQ-Clients. |
Wenn Sie die Entwicklung lokal ausführen, fügen Sie Ihre Anwendungseinstellungen in der Datei local.settings.json in der Values
-Sammlung hinzu.
Vollständige Beispiele finden Sie im Abschnitt Beispiele.
Verwendung
Der vom RabbitMQ-Trigger unterstützte Parametertyp hängt von der Version der Functions-Runtime, von der Version des Erweiterungspakets sowie von der verwendeten C#-Modalität ab.
Die RabbitMQ-Bindungen unterstützen derzeit nur Zeichenfolgen und serialisierbare Objekttypen, wenn sie in einem isolierten Workerprozess ausgeführt werden.
Ein vollständiges Beispiel finden Sie unter C#-Beispiel.
Verwenden Sie die folgenden Parametertypen für die Ausgabebindung:
byte[]
: Wenn der Parameterwert am Ende der Funktion NULL ist, wird keine Nachricht erstellt.string
: Wenn der Parameterwert am Ende der Funktion NULL ist, wird keine Nachricht erstellt.POJO
: Wenn der Parameterwert nicht als Java-Objekt formatiert ist, wird eine Fehlermeldung ausgegeben.
Die Warteschlangennachricht ist über context.bindings.<NAME>
verfügbar, wobei <NAME>
dem in „function.json“ definierten Namen entspricht. Falls es sich um eine JSON-Nutzlast handelt, wird der Wert in ein Objekt deserialisiert.
Weitere Informationen finden Sie im Beispiel für Python.