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

Hinweis

RabbitMQ-Bindungen werden nur mit den Plänen Premium und Dediziert vollständig unterstützt. Die Nutzung wird nicht unterstützt.

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

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 @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)

Attribute

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

Konfiguration

Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie in der Datei function.json festlegen.

function.json-Eigenschaft BESCHREIBUNG
type Muss auf RabbitMQTrigger festgelegt sein.
direction 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.
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.

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

Ein vollständiges Beispiel finden Sie unter C#-Beispiel.

Weitere Informationen finden Sie unter Anmerkungen für Java.

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.

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.

Einstellungen für „host.json“

In diesem Abschnitt werden die für diese Bindung verfügbaren Konfigurationseinstellungen in Version 2.x und höher beschrieben. Einstellungen in der Datei „host.json“ gelten für alle Funktionen in einer Funktions-App-Instanz. Die nachfolgende Beispieldatei „host.json“ enthält nur die Einstellungen für Version 2.x und höhere Versionen für diese Bindung. Weitere Informationen zu den Konfigurationseinstellungen für Funktions-Apps in Version 2.x und höher finden Sie unter host.json-Referenz für Azure Functions.

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            "prefetchCount": 100,
            "queueName": "queue",
            "connectionString": "amqp://user:password@url:port",
            "port": 10
        }
    }
}
Eigenschaft Standard BESCHREIBUNG
prefetchCount 30 Ruft die Anzahl der Nachrichten ab, die der Nachrichtenempfänger gleichzeitig anfordern und zwischenspeichern kann, oder legt sie fest.
queueName Name der Warteschlange, von der Nachrichten empfangen werden.
connectionString Die Verbindungszeichenfolge der RabbitMQ-Nachrichtenwarteschlange. Die Verbindungszeichenfolge wird hier direkt und nicht über eine App-Einstellung angegeben.
port 0 (bei Verwenden von connectionString ignoriert) Dient zum Abrufen oder Festlegen des verwendeten Ports. Der Standardwert ist „0“ und verweist auf die Standardporteinstellung des RabbitMQ-Clients: 5672.

Lokales Testen

Hinweis

„connectionString“ hat Vorrang vor „hostName“, „userName“ und „password“. Wenn diese Werte alle festgelegt wurden, setzt „connectionString“ die anderen beiden außer Kraft.

Wenn Sie lokale Tests ohne Verbindungszeichenfolge durchführen, legen Sie die Einstellung „hostName“ und ggf. „userName“ und „password“ im Abschnitt „rabbitMQ“ in der Datei host.json fest:

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            ...
            "hostName": "localhost",
            "username": "userNameSetting",
            "password": "passwordSetting"
        }
    }
}
Eigenschaft Standard Beschreibung
hostName Nicht zutreffend (ignoriert, wenn connectionString verwendet wird)
Hostname der Warteschlange (z. B.: 10.26.45.210)
userName Nicht zutreffend (ignoriert, wenn connectionString verwendet wird)
Name für den Zugriff auf die Warteschlange
password Nicht zutreffend (ignoriert, wenn connectionString verwendet wird)
Kennwort für den Zugriff auf die Warteschlange

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 CLI kann Runtime Scale Monitoring mit dem folgenden Befehl aktiviert werden:

az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites

Überwachen des RabbitMQ-Endpunkts

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

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

Nächste Schritte