Dela via


Översikt över RabbitMQ-utlösare för Azure Functions

Kommentar

RabbitMQ-bindningarna stöds endast fullt ut i Premium- och Dedicated-abonnemang . Förbrukning stöds inte.

Använd RabbitMQ-utlösaren för att svara på meddelanden från en RabbitMQ-kö.

Information om konfiguration och konfigurationsinformation finns i översikten.

Exempel

En C#-funktion kan skapas med något av följande C#-lägen:

  • Isolerad arbetsmodell: Kompilerad C#-funktion som körs i en arbetsprocess som är isolerad från körningen. Isolerad arbetsprocess krävs för att stödja C#-funktioner som körs på LTS- och icke-LTS-versioner .NET och .NET Framework.
  • Processmodell: Kompilerad C#-funktion som körs i samma process som Functions-körningen.
  • C#-skript: Används främst när du skapar C#-funktioner i Azure-portalen.
[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;
}

Följande Java-funktion använder anteckningen @RabbitMQTrigger från Java RabbitMQ-typerna för att beskriva konfigurationen för en RabbitMQ-köutlösare. Funktionen hämtar meddelandet som placerats i kön och lägger till det i loggarna.

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

I följande exempel visas en RabbitMQ-utlösarbindning i en function.json-fil och en JavaScript-funktion som använder bindningen. Funktionen läser och loggar ett RabbitMQ-meddelande.

Här är bindningsdata i filen function.json :

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

Här är JavaScript-skriptkoden:

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

I följande exempel visas hur du läser ett RabbitMQ-kömeddelande via en utlösare.

En RabbitMQ-bindning definieras i function.json där typen är inställd på RabbitMQTrigger.

{​​
    "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)

Attribut

C#-bibliotek för både process- och isolerad arbetsprocess använder attributet för att definiera funktionen. C#-skriptet använder i stället en function.json konfigurationsfil.

Attributets konstruktor tar följande parametrar:

Parameter Description
QueueName Namnet på kön som meddelanden ska tas emot från.
HostName Värdnamn för kön, till exempel 10.26.45.210. Ignoreras när du använder ConnectStringSetting.
UserNameSetting Namnet på appinställningen som innehåller användarnamnet för åtkomst till kön, till exempel UserNameSetting: "%< UserNameFromSettings >%". Ignoreras när du använder ConnectStringSetting.
PasswordSetting Namnet på appinställningen som innehåller lösenordet för att komma åt kön, till exempel PasswordSetting: "%< PasswordFromSettings >%". Ignoreras när du använder ConnectStringSetting.
ConnectionStringSetting Namnet på appinställningen som innehåller RabbitMQ-meddelandekön niska veze. Utlösaren fungerar inte när du anger niska veze direkt i stället via en appinställning. När du till exempel har angett ConnectionStringSetting: "rabbitMQConnection"behöver du i både local.settings.json och i funktionsappen en inställning som "RabbitMQConnection" : "< ActualConnectionstring >".
Port Hämtar eller anger den port som används. Standardvärdet är 0, vilket pekar på RabbitMQ-klientens standardportinställning på 5672.

I C#-klassbibliotek använder du attributet RabbitMQTrigger .

Här är ett RabbitMQTrigger attribut i en metodsignatur för ett isolerat arbetsprocessbibliotek:

[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
    FunctionContext context)
{

Kommentarer

Med anteckningen RabbitMQTrigger kan du skapa en funktion som körs när ett RabbitMQ-meddelande skapas.

Kommentaren stöder följande konfigurationsalternativ:

Parameter Description
queueName Namnet på kön som meddelanden ska tas emot från.
hostName Värdnamn för kön, till exempel 10.26.45.210. Ignoreras när du använder ConnectStringSetting.
userNameSetting Namnet på appinställningen som innehåller användarnamnet för åtkomst till kön, till exempel UserNameSetting: "%< UserNameFromSettings >%". Ignoreras när du använder ConnectStringSetting.
passwordSetting Namnet på appinställningen som innehåller lösenordet för att komma åt kön, till exempel PasswordSetting: "%< PasswordFromSettings >%". Ignoreras när du använder ConnectStringSetting.
connectionStringSetting Namnet på appinställningen som innehåller RabbitMQ-meddelandekön niska veze. Utlösaren fungerar inte när du anger niska veze direkt i stället via en appinställning. När du till exempel har angett ConnectionStringSetting: "rabbitMQConnection"behöver du i både local.settings.json och i funktionsappen en inställning som "RabbitMQConnection" : "< ActualConnectionstring >".
port Hämtar eller anger den port som används. Standardvärdet är 0, vilket pekar på RabbitMQ-klientens standardportinställning på 5672.

Konfiguration

I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i filen function.json .

function.json egenskap beskrivning
typ Måste anges till RabbitMQTrigger.
riktning Måste anges till in.
Namn Namnet på variabeln som representerar kön i funktionskoden.
queueName Namnet på kön som meddelanden ska tas emot från.
hostName Värdnamn för kön, till exempel 10.26.45.210. Ignoreras när du använder connectStringSetting.
userNameSetting Namnet på appinställningen som innehåller användarnamnet för åtkomst till kön, till exempel UserNameSetting: "%< UserNameFromSettings >%". Ignoreras när du använder connectStringSetting.
passwordSetting Namnet på appinställningen som innehåller lösenordet för att komma åt kön, till exempel PasswordSetting: "%< PasswordFromSettings >%". Ignoreras när du använder connectStringSetting.
connectionStringSetting Namnet på appinställningen som innehåller RabbitMQ-meddelandekön niska veze. Utlösaren fungerar inte när du anger niska veze direkt i stället via en appinställning. När du till exempel har angett connectionStringSetting: "rabbitMQConnection"behöver du i både local.settings.json och i funktionsappen en inställning som "rabbitMQConnection" : "< ActualConnectionstring >".
port Hämtar eller anger den port som används. Standardvärdet är 0, vilket pekar på RabbitMQ-klientens standardportinställning på 5672.

När du utvecklar lokalt lägger du till dina programinställningar i den local.settings.json filen i Values samlingen.

Se avsnittet Exempel för fullständiga exempel.

Användning

Vilken parametertyp som stöds av RabbitMQ-utlösaren beror på vilken C#-modalitet som används.

RabbitMQ-bindningarna stöder för närvarande endast sträng- och serialiserbara objekttyper när de körs i en isolerad process.

Ett fullständigt exempel finns i C#- exempel.

Se Java-anteckningar.

Kömeddelandet är tillgängligt via context.bindings.<NAME> där <NAME> matchar namnet som definierats i function.json. Om nyttolasten är JSON deserialiseras värdet till ett objekt.

Se Python-exemplet.

Köer med obeställbara meddelanden

Köer och utbyten med obeställbara meddelanden kan inte styras eller konfigureras från RabbitMQ-utlösaren. Om du vill använda köer med obeställbara meddelanden förkonfigurerar du kön som används av utlösaren i RabbitMQ. Se RabbitMQ-dokumentationen.

host.json inställningar

I det här avsnittet beskrivs de konfigurationsinställningar som är tillgängliga för den här bindningen i version 2.x och senare. Inställningar i host.json-filen gäller för alla funktioner i en funktionsappinstans. Exemplet host.json filen nedan innehåller endast version 2.x+-inställningarna för den här bindningen. Mer information om konfigurationsinställningar för funktionsappar i version 2.x och senare versioner finns i host.json referens för Azure Functions.

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            "prefetchCount": 100,
            "queueName": "queue",
            "connectionString": "amqp://user:password@url:port",
            "port": 10
        }
    }
}
Property Standardvärde beskrivning
prefetchCount 30 Hämtar eller anger antalet meddelanden som meddelandemottagaren kan begära samtidigt och cachelagras.
queueName saknas Namnet på kön som ska ta emot meddelanden från.
connectionString saknas RabbitMQ-meddelandekön niska veze. Niska veze anges direkt här och inte via en appinställning.
port 0 (ignoreras om du använder connectionString) Hämtar eller anger den port som används. Standardvärdet är 0, vilket pekar på standardportinställningen för rabbitmq-klienten: 5672.

Lokal testning

Kommentar

ConnectionString har företräde framför "hostName", "userName" och "password". Om alla dessa anges åsidosätter connectionString de andra två.

Om du testar lokalt utan en niska veze bör du ange inställningen "hostName" och "userName" och "password" om det är tillämpligt i avsnittet "rabbitMQ" i host.json:

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            ...
            "hostName": "localhost",
            "username": "userNameSetting",
            "password": "passwordSetting"
        }
    }
}
Property Standardvärde beskrivning
hostName saknas (ignoreras om du använder connectionString)
Värdnamn för kön (till ex: 10.26.45.210)
userName saknas (ignoreras om du använder connectionString)
Namn för åtkomst till kön
password saknas (ignoreras om du använder connectionString)
Lösenord för att komma åt kön

Aktivera körningsskalning

För att RabbitMQ-utlösaren ska kunna skalas ut till flera instanser måste inställningen Körningsskalningsövervakning vara aktiverad.

I portalen finns den här inställningen under Konfigurationsfunktionens>körningsinställningar för funktionsappen.

VNETToggle

I CLI kan du aktivera Körningsskalningsövervakning med hjälp av följande kommando:

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

Övervaka RabbitMQ-slutpunkt

Så här övervakar du köer och utbyten för en viss RabbitMQ-slutpunkt:

  • Aktivera plugin-programmet för RabbitMQ-hantering
  • Bläddra till http://{node-hostname}:15672 och logga in med ditt användarnamn och lösenord.

Nästa steg