Azure Service Bus-bindningar för Azure Functions

Azure Functions integreras med Azure Service Bus via utlösare och bindningar. Genom att integrera med Service Bus kan du skapa funktioner som reagerar på och skicka kö- eller ämnesmeddelanden.

Åtgärd Typ
Kör en funktion när en Service Bus-kö eller ett ämnesmeddelande skapas Utlösare
Skicka Azure Service Bus-meddelanden Utdatabindning

Installera tillägget

Vilket NuGet-tilläggspaket du installerar beror på vilket C#-läge du använder i funktionsappen:

Funktioner körs i en isolerad C#-arbetsprocess. Mer information finns i Guide för att köra C# Azure Functions i en isolerad arbetsprocess.

Lägg till tillägget i projektet när du installerar det här NuGet-paketet.

Funktionerna i tillägget varierar beroende på tilläggsversionen:

Den här versionen introducerar möjligheten att ansluta med hjälp av en identitet i stället för en hemlighet. En självstudiekurs om hur du konfigurerar dina funktionsappar med hanterade identiteter finns i självstudien skapa en funktionsapp med identitetsbaserade anslutningar.

Med den här versionen kan du binda till typer från Azure.Messaging.ServiceBus.

Lägg till tillägget i projektet genom att installera NuGet-paketet version 5.x.

Installera paket

Service Bus-bindningen är en del av ett tilläggspaket som anges i din host.json projektfil. Du kan behöva ändra det här paketet för att ändra versionen av bindningen, eller om paket inte redan är installerade. Mer information finns i tilläggspaketet.

Den här versionen introducerar möjligheten att ansluta med hjälp av en identitet i stället för en hemlighet. En självstudiekurs om hur du konfigurerar dina funktionsappar med hanterade identiteter finns i självstudien skapa en funktionsapp med identitetsbaserade anslutningar.

Du kan lägga till den här versionen av tillägget från tilläggspaketet v3 genom att lägga till eller ersätta följande kod i host.json filen:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.3.0, 4.0.0)"
    }
}

Mer information finns i Uppdatera dina tillägg.

Bindningstyper

Vilka bindningstyper som stöds för .NET beror på både tilläggsversionen och C#-körningsläget, vilket kan vara något av följande:

Ett isolerat arbetsprocessklassbibliotek kompilerade C#-funktioner körs i en process som är isolerad från körningen.

Välj en version för att se information om bindningstyp för läget och versionen.

Den isolerade arbetsprocessen stöder parametertyper enligt tabellerna nedan.

Service Bus-utlösare

När du vill att funktionen ska bearbeta ett enda meddelande kan Service Bus-utlösaren binda till följande typer:

Typ Beskrivning
string Meddelandet som en sträng. Använd när meddelandet är enkel text.
byte[] Byte för meddelandet.
JSON-serialiserbara typer När en händelse innehåller JSON-data försöker Functions deserialisera JSON-data till en vanlig CLR-objekttyp (POCO).
ServiceBusReceivedMessage1 Meddelandeobjektet.

När du binder till ServiceBusReceivedMessagekan du även inkludera en parameter av typen ServiceBusMessageActions1,2 för att utföra åtgärder för att lösa meddelanden.

När du vill att funktionen ska bearbeta en batch med meddelanden kan Service Bus-utlösaren binda till följande typer:

Typ Beskrivning
T[] där T är en av de enskilda meddelandetyperna En matris med händelser från batchen. Varje post representerar en händelse.

När du binder till ServiceBusReceivedMessage[]kan du även inkludera en parameter av typen ServiceBusMessageActions1,2 för att utföra åtgärder för att lösa meddelanden.

1 Om du vill använda dessa typer måste du referera till Microsoft.Azure.Functions.Worker.Extensions.ServiceBus 5.14.1 eller senare och de vanliga beroendena för SDK-typbindningar.

2 När du använder ServiceBusMessageActionsanger du AutoCompleteMessages egenskapen för utlösarattributet till false. Detta förhindrar körningen från att försöka slutföra meddelanden efter ett lyckat funktionsanrop.

Service Bus-utdatabindning

När du vill att funktionen ska skriva ett enda meddelande kan Service Bus-utdatabindningen binda till följande typer:

Typ Beskrivning
string Meddelandet som en sträng. Använd när meddelandet är enkel text.
byte[] Byte för meddelandet.
JSON-serialiserbara typer Ett objekt som representerar meddelandet. Functions försöker serialisera en vanlig CLR-objekttyp (POCO) till JSON-data.

När du vill att funktionen ska skriva flera meddelanden kan Service Bus-utdatabindningen binda till följande typer:

Typ Beskrivning
T[] där T är en av de enskilda meddelandetyperna En matris som innehåller flera meddelanden. Varje post representerar ett meddelande.

För andra utdatascenarier skapar och använder du typer från Azure.Messaging.ServiceBus direkt.

host.json inställningar

I det här avsnittet beskrivs de konfigurationsinställningar som är tillgängliga för den här bindningen, vilket beror på körnings- och tilläggsversionen.

{
    "version": "2.0",
    "extensions": {
        "serviceBus": {
            "clientRetryOptions":{
                "mode": "exponential",
                "tryTimeout": "00:01:00",
                "delay": "00:00:00.80",
                "maxDelay": "00:01:00",
                "maxRetries": 3
            },
            "prefetchCount": 0,
            "transportType": "amqpWebSockets",
            "webProxy": "https://proxyserver:8080",
            "autoCompleteMessages": true,
            "maxAutoLockRenewalDuration": "00:05:00",
            "maxConcurrentCalls": 16,
            "maxConcurrentSessions": 8,
            "maxMessageBatchSize": 1000,
            "minMessageBatchSize": 1,
            "maxBatchWaitTime": "00:00:30",
            "sessionIdleTimeout": "00:01:00",
            "enableCrossEntityTransactions": false
        }
    }
}

clientRetryOptions Inställningarna gäller endast för interaktioner med Service Bus-tjänsten. De påverkar inte återförsök av funktionskörningar. Mer information finns i Försök igen.

Property Standardvärde beskrivning
läge Exponential Den metod som ska användas för att beräkna fördröjningar av återförsök. Standard exponentiellt läge försöker igen med en fördröjning baserat på en back-off-strategi där varje försök ökar väntetiden innan du försöker igen. Läget Fixed försöker igen med fasta intervall där varje fördröjning har en konsekvent varaktighet.
tryTimeout 00:01:00 Den maximala varaktigheten för att vänta på en åtgärd per försök.
Försening 00:00:00.80 Fördröjnings- eller back-off-faktorn som ska tillämpas mellan återförsök.
maxDelay 00:01:00 Den maximala fördröjning som tillåts mellan återförsök
maxRetries 3 Det maximala antalet återförsök innan du överväger att den associerade åtgärden ska ha misslyckats.
prefetchCount 0 Hämtar eller anger antalet meddelanden som meddelandemottagaren kan begära samtidigt.
transportType amqpTcp Protokollet och transporten som används för kommunikation med Service Bus. Tillgängliga alternativ: amqpTcp, amqpWebSockets
Webproxy saknas Proxyn som ska användas för kommunikation med Service Bus via webbsocketer. Det går inte att använda en proxy med transporten amqpTcp .
autoCompleteMessages true Avgör om meddelanden ska slutföras automatiskt efter att funktionen har körts.
maxAutoLockRenewalDuration 00:05:00 Den maximala varaktighet inom vilken meddelandelåset förnyas automatiskt. Den här inställningen gäller endast för funktioner som tar emot ett enda meddelande i taget.
maxConcurrentCalls 16 Det maximala antalet samtidiga anrop till återanropet som ska initieras per skalad instans. Som standard bearbetar Functions-körningen flera meddelanden samtidigt. Den här inställningen används bara när isSessionsEnabled egenskapen eller attributet på utlösaren är inställt false. Den här inställningen gäller endast för funktioner som tar emot ett enda meddelande i taget.
maxConcurrentSessions 8 Det maximala antalet sessioner som kan hanteras samtidigt per skalad instans. Den här inställningen används bara när isSessionsEnabled egenskapen eller attributet på utlösaren är inställt true. Den här inställningen gäller endast för funktioner som tar emot ett enda meddelande i taget.
maxMessageBatchSize 1000 Det maximala antalet meddelanden som skickas till varje funktionsanrop. Den här inställningen gäller endast för funktioner som tar emot en batch med meddelanden.
minMessageBatchSize1 1 Det minsta antalet meddelanden som önskas i en batch. Minimivärdet gäller endast när funktionen tar emot flera meddelanden och måste vara mindre än maxMessageBatchSize.
Minimistorleken är inte strikt garanterad. En partiell batch skickas när en fullständig batch inte kan förberedas innan den maxBatchWaitTime har förflutit.
maxBatchWaitTime1 00:00:30 Det maximala intervall som utlösaren ska vänta med att fylla en batch innan funktionen anropas. Väntetiden beaktas endast när minMessageBatchSize är större än 1 och ignoreras annars. Om mindre än minMessageBatchSize meddelanden var tillgängliga innan väntetiden förflutit anropas funktionen med en partiell batch. Den längsta tillåtna väntetiden är 50 % av varaktigheten för entitetsmeddelandelåset, vilket innebär att det maximala tillåtna är 2 minuter och 30 sekunder. Annars kan du få låsfel.

Obs! Det här intervallet är inte en strikt garanti för den exakta tidpunkt som funktionen anropas för. Det finns en liten felmarginal på grund av tidsinställd precision.
sessionIdleTimeout saknas Den maximala väntetiden för att ett meddelande ska tas emot för den aktiva sessionen. När den här tiden har gått stängs sessionen och funktionen försöker bearbeta en annan session.
enableCrossEntityTransactions false Om du vill aktivera transaktioner som omfattar flera entiteter i ett Service Bus-namnområde eller inte.

1 Användning minMessageBatchSize och maxBatchWaitTime kräver v5.10.0 av Microsoft.Azure.WebJobs.Extensions.ServiceBus paketet eller en senare version.

Nästa steg