Dela via


Översikt över RabbitMQ-utdatabindning 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-utdatabindningen för att skicka meddelanden till 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 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

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 anslutningssträng. Utlösaren fungerar inte när du anger anslutningssträng 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 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.
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 anslutningssträng. Utlösaren fungerar inte när du anger anslutningssträng 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.

Mer information finns i utdatabindningsexemplet.

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.
hostName Värdnamn för kön, till exempel 10.26.45.210. Ignoreras när du använder connectStringSetting.
userName 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.
lösenord Namnet på appinställningen som innehåller lösenordet för åtkomst till kön, till exempel UserNameSetting: "< UserNameFromSettings >". Ignoreras när du använder connectStringSetting.
connectionStringSetting Namnet på appinställningen som innehåller RabbitMQ-meddelandekön anslutningssträng. Utlösaren fungerar inte när du anger anslutningssträng direkt i stället för via en appinställning i local.settings.json. När du till exempel har angett connectionStringSetting: "rabbitMQConnection" i både local.settings.json och i funktionsappen behöver du 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.

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.

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

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.

Se Python-exemplet.

Nästa steg