Freigeben über


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.

Nächste Schritte