Freigeben über


Übersicht über RabbitMQ-Trigger für Azure Functions

Verwenden Sie den RabbitMQ-Trigger, um auf Nachrichten aus einer RabbitMQ-Warteschlange zu antworten.

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 @RabbitMQTrigger-Anmerkung aus den @RabbitMQTrigger, um die Konfiguration für einen RabbitMQ-Warteschlangentrigger zu beschreiben. Die Funktion ruft die Nachricht aus der Warteschlange ab und fügt sie den Protokollen hinzu.

@FunctionName("RabbitMQTriggerExample")
public void run(
    @RabbitMQTrigger(connectionStringSetting = "rabbitMQConnectionAppSetting", queueName = "queue") String input,
    final ExecutionContext context)
{
    context.getLogger().info("Java HTTP trigger processed a request." + input);
}

Das folgende Beispiel zeigt eine RabbitMQ-Triggerbindung in einer Datei function.json sowie eine JavaScript-Skriptfunktion, die diese Bindung verwendet. Die Funktion liest und protokolliert eine RabbitMQ-Nachricht.

Bindungsdaten in der Datei function.json:

{​​
    "bindings": [
        {​​
            "name": "myQueueItem",
            "type": "rabbitMQTrigger",
            "direction": "in",
            "queueName": "queue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting"
        }​​
    ]
}​​

Der JavaScript-Skriptcode sieht wie folgt aus:

module.exports = async function (context, myQueueItem) {​​
    context.log('JavaScript RabbitMQ trigger function processed work item', myQueueItem);
}​​;

Das folgende Beispiel zeigt, wie Sie eine RabbitMQ-Warteschlangennachricht mittels Trigger lesen.

Eine RabbitMQ-Bindung wird in function.json definiert, indem type auf RabbitMQTrigger festgelegt wird.

{​​
    "scriptFile": "__init__.py",
    "bindings": [
        {​​
            "name": "myQueueItem",
            "type": "rabbitMQTrigger",
            "direction": "in",
            "queueName": "queue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting"
        }​​
    ]
}​​
import logging
import azure.functions as func

def main(myQueueItem) -> None:
    logging.info('Python RabbitMQ trigger function processed a queue item: %s', myQueueItem)

PowerShell-Beispiele sind derzeit nicht verfügbar.

Attribute

Sowohl isolierte Arbeitsprozess - als auch In-Process-C#- Bibliotheken verwenden RabbitMQTriggerAttribute die Definition der Funktion, wobei bestimmte Eigenschaften des Attributs von der Erweiterungsversion abhängen.

Der Konstruktor des Attributs akzeptiert die folgenden Parameter:

Parameter BESCHREIBUNG
Warteschlangenname 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.

Anmerkungen

Mit der RabbitMQTrigger-Anmerkung können Sie eine Funktion erstellen, die ausgeführt wird, wenn eine RabbitMQ-Nachricht erstellt wird.

Von der Anmerkung werden folgende Konfigurationsoptionen unterstützt:

Parameter 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 Boolescher Wert, der festgelegt werden kann, um true anzugeben, dass die Zertifikatüberprüfung deaktiviert werden soll. Der Standardwert ist false. 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 RabbitMQTrigger festgelegt sein.
Richtung Muss auf in festgelegt sein.
Name Der Name der Variablen, die die Warteschlange im Funktionscode darstellt.
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 Boolescher Wert, der festgelegt werden kann, um true anzugeben, dass die Zertifikatüberprüfung deaktiviert werden soll. Der Standardwert ist false. 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 verwendeten C#-Modalität ab.

Die RabbitMQ-Bindungen unterstützen derzeit nur Zeichenfolgen und serialisierbare Objekttypen, wenn sie in einem isolierten Prozess ausgeführt werden.

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.

Warteschlangen für unzustellbare Nachrichten

Warteschlangen für unzustellbare Nachrichten und Austauschvorgänge können nicht über den RabbitMQ-Trigger gesteuert oder konfiguriert werden. Um Warteschlangen für unzustellbare Nachrichten zu verwenden, konfigurieren Sie vorab die Warteschlange, die vom Trigger in RabbitMQ verwendet wird. Weitere Informationen finden Sie in der RabbitMQ-Dokumentation.

Aktivieren von „Runtime Scale Monitoring“

Damit der RabbitMQ-Auslöser auf mehrere Instanzen aufskaliert werden kann, muss die Einstellung Runtime Scale Monitoring aktiviert werden.

Im Portal finden Sie diese Einstellung unter Konfiguration>Einstellungen der Funktionsruntime für Ihre Funktions-App.

VNETToggle

In der Azure CLI können Sie die Skalierungsüberwachung zur Laufzeit aktivieren, indem Sie den folgenden Befehl verwenden:

az resource update -resource-group <RESOURCE_GROUP> -name <APP_NAME>/config/web \
    --set properties.functionsRuntimeScaleMonitoringEnabled=1 \
    --resource-type Microsoft.Web/sites

Überwachen eines RabbitMQ-Endpunkts

So überwachen Sie Warteschlangen und Austauschvorgänge für einen RabbitMQ-Endpunkt

  • Aktivieren des RabbitMQ-Verwaltungs-Plug-Ins
  • Navigieren Sie mit Ihrem Benutzernamen und Kennwort zu http://{node-hostname}:15672 und melden Sie sich an.

Verwandter Artikel