Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwenden Sie die RabbitMQ-Ausgabebindung, um Nachrichten an eine RabbitMQ-Warteschlange zu senden.
Hinweis
Die RabbitMQ-Bindungen werden nur für Elastic Premium- und Dedicated-Pläne (App Service) vollständig unterstützt. Flex-Verbrauchs - und Verbrauchspläne werden noch nicht unterstützt.
RabbitMQ-Bindungen werden von der Azure Functions v1.x-Laufzeit nicht unterstützt.
Informationen zu Setup- und Konfigurationsdetails finden Sie in der Übersicht.
Beispiel
Sie können eine C#-Funktion mit einem der folgenden C#-Modi erstellen:
- Isoliertes Workermodell: Kompilierte C#-Funktion, die in einem Workerprozess ausgeführt wird, der von der Runtime isoliert ist. Ein isolierter Arbeitsprozess ist erforderlich, um C#-Funktionen zu unterstützen, die auf long-term support (LTS) und nicht-LTS-Versionen für .NET und .NET Framework ausgeführt werden.
- In-Process-Modell: Kompilierte C#-Funktion, die im gleichen Prozess wie die Azure Functions-Laufzeit 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'
Attribute
Sowohl isolierte Arbeitsprozesse als auch C#-Bibliotheken verwenden ein Attribut, um eine Ausgabebindung zu definieren, die in eine RabbitMQ-Warteschlange schreibt.
Der RabbitMQOutputAttribute Konstruktor akzeptiert die folgenden Parameter:
| Parameter | BESCHREIBUNG |
|---|---|
| QueueName | Name der Warteschlange, aus der Nachrichten empfangen werden sollen. |
| HostName | Dieser Parameter wird nicht mehr unterstützt und wird ignoriert. Sie wird in einer zukünftigen Version entfernt. |
| ConnectionStringSetting | Der Name der App-Einstellung, die die Verbindungszeichenfolge für Ihren RabbitMQ-Server enthält. Diese Einstellung verwendet nur den Namen des App-Einstellungsschlüssels, Sie können keinen Verbindungszeichenfolgenwert direkt festlegen. Weitere Informationen finden Sie unter Connections. |
| UserNameEinstellung | Dieser Parameter wird nicht mehr unterstützt und wird ignoriert. Sie wird in einer zukünftigen Version entfernt. |
| PasswordSetting | Dieser Parameter wird nicht mehr unterstützt und wird ignoriert. Sie wird in einer zukünftigen Version entfernt. |
| Hafen | Ruft den verwendeten Port ab oder legt ihn fest. Der Standardwert (0) verweist auf die Standardporteinstellung 5672 des RabbitMQ-Clients. |
| DisableCertificateValidation | Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob die Zertifikatüberprüfung deaktiviert werden soll. Nicht für die Produktion empfohlen. Gilt nicht, wenn SSL deaktiviert ist. |
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. |
| connectionStringSetting | Der Name der App-Einstellung, die die Verbindungszeichenfolge für Ihren RabbitMQ-Server enthält. Diese Einstellung verwendet nur den Namen des App-Einstellungsschlüssels, Sie können keinen Verbindungszeichenfolgenwert direkt festlegen. Weitere Informationen finden Sie unter Connections. |
| disableCertificateValidation | Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob die Zertifikatüberprüfung deaktiviert werden soll. Nicht für die Produktion empfohlen. Gilt nicht, wenn SSL deaktiviert ist. |
Konfiguration
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie in der Datei function.json festlegen.
| function.json-Eigenschaft | BESCHREIBUNG |
|---|---|
| Typ | Muss auf RabbitMQ festgelegt sein. |
| Richtung | 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. |
| connectionStringSetting | Der Name der App-Einstellung, die die Verbindungszeichenfolge für Ihren RabbitMQ-Server enthält. Diese Einstellung verwendet nur den Namen des App-Einstellungsschlüssels, Sie können keinen Verbindungszeichenfolgenwert direkt festlegen. Weitere Informationen finden Sie unter Connections. |
| disableCertificateValidation | Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob die Zertifikatüberprüfung deaktiviert werden soll. Nicht für die Produktion empfohlen. Gilt nicht, wenn SSL deaktiviert ist. |
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.
Verbrauch
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.
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.
Verbindungen
Wichtig
Die RabbitMQ-Bindung unterstützt keine Microsoft Entra-Authentifizierung und verwaltete Identitäten. Sie können Azure Key Vault verwenden, um Ihre RabbitMQ-Verbindungszeichenfolge zentral zu verwalten. Weitere Informationen finden Sie unter "Verbindungen verwalten".
Ab Version 2.x der Erweiterung, hostNameuserNameSetting, und passwordSetting werden nicht mehr unterstützt, um eine Verbindung mit dem RabbitMQ-Server zu definieren. Sie müssen stattdessen verwenden connectionStringSetting.
Die connectionStringSetting Eigenschaft kann nur den Namen eines Schlüsselwertpaars in den App-Einstellungen akzeptieren. Sie können einen Verbindungszeichenfolgenwert in der Bindung nicht direkt festlegen.
Wenn Sie beispielsweise in Ihrer Bindungsdefinition festgelegt connectionStringSettingrabbitMQConnection haben, muss Ihre Funktions-App über eine App-Einstellung verfügen rabbitMQConnection , die entweder einen Verbindungswert wie amqp://myuser:***@contoso.rabbitmq.example.com:5672 oder einen Azure Key Vault-Verweis zurückgibt.
Wenn Sie lokal ausgeführt werden, müssen Sie auch den Schlüsselwert connectionStringSetting haben, der in Ihrer local.settings.json Datei definiert ist. Andernfalls kann Ihre App keine Verbindung mit dem Dienst von Ihrem lokalen Computer herstellen, und ein Fehler tritt auf.