Freigeben über


RabbitMQ-Ausgabebindung für Azure Functions – Übersicht

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.