Dela via


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

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

Kommentar

RabbitMQ-bindningarna stöds endast fullt ut i Elastic Premium- och Dedicated-planer (App Service). Flex-förbruknings - och förbrukningsplaner stöds inte ännu.

RabbitMQ-bindningar stöds inte av Azure Functions v1.x-körningen.

Information om konfiguration och konfigurationsinformation finns i översikten.

Exempel

Du kan skapa en C#-funktion 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. En isolerad arbetsprocess krävs för att stödja C#-funktioner som körs på långsiktig support (LTS) och icke-LTS-versioner för .NET och .NET Framework.
  • Processmodell: Kompilerad C#-funktion som körs i samma process som Azure Functions-körningen.
  • C#-skript: Används främst när du skapar C#-funktioner i Azure Portal.
[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)

PowerShell-exempel är inte tillgängliga för närvarande.

Attribut

Både isolerade arbetsprocess- och processbaserade C#-bibliotek använder RabbitMQTriggerAttribute för att definiera funktionen, där specifika egenskaper för attributet är beroende av tilläggsversionen.

Attributets konstruktor accepterar följande parametrar:

Parameter Beskrivning
Könamn Namnet på kön som meddelanden ska tas emot från.
HostName Den här parametern stöds inte längre och ignoreras. Den tas bort i en framtida version.
ConnectionStringSetting Namnet på appinställningen som innehåller anslutningssträngen för RabbitMQ-servern. Den här inställningen tar bara ett nyckelnamn för appinställningen. Du kan inte ange ett anslutningssträngsvärde direkt. Mer information finns i Anslutningar.
UserNameSetting Den här parametern stöds inte längre och ignoreras. Den tas bort i en framtida version.
PasswordSetting Den här parametern stöds inte längre och ignoreras. Den tas bort i en framtida version.
Hamn Hämtar eller anger den port som används. Standardvärdet är 0, vilket pekar på RabbitMQ-klientens standardportinställning på 5672.

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 Beskrivning
queueName Namnet på kön som meddelanden ska tas emot från.
connectionStringSetting Namnet på appinställningen som innehåller anslutningssträngen för RabbitMQ-servern. Den här inställningen tar bara ett nyckelnamn för appinställningen. Du kan inte ange ett anslutningssträngsvärde direkt. Mer information finns i Anslutningar.
disableCertificateValidation Booleskt värde som kan anges till true som anger att certifikatverifiering ska inaktiveras. Standardvärdet är false. Rekommenderas inte för produktion. Gäller inte när SSL är inaktiverat.

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.
connectionStringSetting Namnet på appinställningen som innehåller anslutningssträngen för RabbitMQ-servern. Den här inställningen tar bara ett nyckelnamn för appinställningen. Du kan inte ange ett anslutningssträngsvärde direkt. Mer information finns i Anslutningar.
disableCertificateValidation Booleskt värde som kan anges till true som anger att certifikatverifiering ska inaktiveras. Standardvärdet är false. Rekommenderas inte för produktion. Gäller inte när SSL är inaktiverat.

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.

Förbrukning

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.

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.

Connections

Viktigt!

RabbitMQ-bindningen stöder inte Microsoft Entra-autentisering och hanterade identiteter. Du kan använda Azure Key Vault för att centralt hantera dina RabbitMQ-anslutningssträng. Mer information finns i Hantera anslutningar.

Från och med version 2.x av tillägget , hostNameuserNameSetting, och passwordSetting stöds inte längre för att definiera en anslutning till RabbitMQ-servern. Du måste i stället använda connectionStringSetting.

Egenskapen connectionStringSetting kan bara acceptera namnet på ett nyckel/värde-par i appinställningarna. Du kan inte ange ett anslutningssträngvärde direkt i bindningen.

När du till exempel har angett connectionStringSetting till rabbitMQConnection i din bindningsdefinition måste funktionsappen ha en appinställning med namnet rabbitMQConnection som returnerar antingen ett anslutningsvärde som amqp://myuser:***@contoso.rabbitmq.example.com:5672 eller en Azure Key Vault-referens.

När du kör lokalt måste du också ha nyckelvärdet för connectionStringSetting definierat i dinlocal.settings.json-fil . Annars kan appen inte ansluta till tjänsten från den lokala datorn och ett fel inträffar.

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.

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 Azure CLI kan du aktivera Körningsskalningsövervakning med hjälp av det här kommandot:

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

Övervaka en 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.

Relaterad artikel