Dela via


Översikt över RabbitMQ-utdatabindning för Azure Functions

Använd RabbitMQ-utdatabindningen för att skicka meddelanden till 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 kommentaren @RabbitMQOutput från Java RabbitMQ-typerna för att beskriva konfigurationen för en RabbitMQ-köutdatabindning. Funktionen skickar ett meddelande till RabbitMQ-kön när den utlöses av en TimerTrigger var 5:e minut.

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

I följande exempel visas en RabbitMQ-utdatabindning i en function.json-fil och en JavaScript-funktion som använder bindningen. Funktionen läser i meddelandet från en HTTP-utlösare och matar ut det till RabbitMQ-kön.

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

{
    "bindings": [
        {
            "type": "httpTrigger",
            "direction": "in",
            "authLevel": "function",
            "name": "input",
            "methods": [
                "get",
                "post"
            ]
        },
        {
            "type": "rabbitMQ",
            "name": "outputMessage",
            "queueName": "outputQueue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting",
            "direction": "out"
        }
    ]
}

Här är JavaScript-kod:

module.exports = async function (context, input) {
    context.bindings.outputMessage = input.body;
};

I följande exempel visas en RabbitMQ-utdatabindning i en function.json-fil och en Python-funktion som använder bindningen. Funktionen läser i meddelandet från en HTTP-utlösare och matar ut det till RabbitMQ-kön.

Här är bindningsdata i filen 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"
        }
    ]
}

I _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'

Attribut

Både isolerade arbetsprocess- och processbaserade C#-bibliotek använder ett attribut för att definiera en utdatabindning som skriver till en RabbitMQ-kö.

Konstruktorn RabbitMQOutputAttribute accepterar följande parametrar:

Parameter Beskrivning
QueueName 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.
DisableCertificateValidation Hämtar eller anger ett värde som anger om certifikatverifiering ska inaktiveras. Rekommenderas inte för produktion. Gäller inte när SSL är inaktiverat.

Kommentarer

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

Kommentaren stöder följande konfigurationsinställningar:

Inställning 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 Hämtar eller anger ett värde som anger om certifikatverifiering ska inaktiveras. 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 RabbitMQ.
riktning Måste anges till out.
Namn Namnet på variabeln som representerar kön i funktionskoden.
queueName Namnet på kön som ska skickas meddelanden till.
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 Hämtar eller anger ett värde som anger om certifikatverifiering ska inaktiveras. 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

Parametertypen som stöds av RabbitMQ-utlösaren beror på functions-körningsversionen, tilläggspaketversionen och den 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 arbetsprocess.

Använd följande parametertyper för utdatabindningen:

  • byte[] – Om parametervärdet är null när funktionen avslutas skapar Functions inte något meddelande.
  • string – Om parametervärdet är null när funktionen avslutas skapar Functions inte något meddelande.
  • POJO – Om parametervärdet inte är formaterat som ett Java-objekt tas ett fel emot.

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.