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
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.
Verbrauch
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".
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.