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:
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.
Den här tilläggsversionen är tillgänglig genom att installera NuGet-paketet, version 5.x eller senare.
När du arbetar med utlösaren och bindningarna måste du referera till lämpligt NuGet-paket. Installera NuGet-paketet, version < 5.x.
Lägg till tillägget i projektet genom att installera NuGet-paketet version 4.x.
Functions version 1.x stöder inte den isolerade arbetsprocessen.
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.
Functions 1.x-appar har automatiskt en referens till tillägget.
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.
Ett kursbibliotek i processen är en kompilerad C#-funktion som körs i samma process som Functions-körningen.
Välj en version för att se information om bindningstyp för läget och versionen.
Service Bus-tillägget stöder parametertyper enligt tabellen nedan.
1 Meddelanden som innehåller JSON-data kan deserialiseras till kända poco-typer (plain-old CLR-objekt).
2 Avancerade scenarier är meddelandelikvidering, sessioner och transaktioner. Dessa typer är tillgängliga som separata parametrar utöver den normala utlösarparametern.
Tidigare versioner av tillägget exponerade typer från det nu inaktuella Microsoft.Azure.ServiceBus-namnområdet . Nyare typer från Azure.Messaging.ServiceBus är exklusiva för tillägg 5.x+.
Den 30 september 2026 drar vi tillbaka Azure Service Bus SDK-biblioteken WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus och com.microsoft.azure.servicebus, som inte följer Riktlinjerna för Azure SDK. Vi kommer också att avsluta stödet för SBMP-protokollet, så du kommer inte längre att kunna använda det här protokollet efter den 30 september 2026. Migrera till de senaste Azure SDK-biblioteken, som erbjuder kritiska säkerhetsuppdateringar och förbättrade funktioner, före det datumet.
Även om de äldre biblioteken fortfarande kan användas efter den 30 september 2026 får de inte längre officiell support och uppdateringar från Microsoft. Mer information finns i meddelandet om supportavgång.
Den här versionen av tillägget stöder parametertyper enligt tabellen nedan.
Service Bus-tillägget stöder parametertyper enligt tabellen nedan.
Bindningsscenario |
Parametertyper |
Service Bus-utlösare (enskilt meddelande) |
[Microsoft.Azure.ServiceBus.Message]
string
byte[] JSON serialiserbara typer1 |
Service Bus-utlösare (meddelandebatch) |
ServiceBusReceivedMessage[]
string[] |
Avancerade scenarier för Service Bus-utlösare2 |
IMessageReceiver
MessageReceiver
IMessageSession
|
Service Bus-utdata (enskilt meddelande) |
Meddelande
string
byte[] JSON serialiserbara typer1 |
Service Bus-utdata (flera meddelanden) |
ICollector<T> eller IAsyncCollector<T> var T är en av de enskilda meddelandetyperna
MessageSender |
1 Meddelanden som innehåller JSON-data kan deserialiseras till kända poco-typer (plain-old CLR-objekt).
2 Avancerade scenarier är meddelandelikvidering, sessioner och transaktioner. Dessa typer är tillgängliga som separata parametrar utöver den normala utlösarparametern.
Functions 1.x-exponerade typer från det inaktuella namnområdet Microsoft.ServiceBus.Messaging . Nyare typer från Azure.Messaging.ServiceBus är exklusiva för tillägg 5.x+. Om du vill använda dessa måste du uppgradera programmet till Functions 4.x.
Den 30 september 2026 drar vi tillbaka Azure Service Bus SDK-biblioteken WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus och com.microsoft.azure.servicebus, som inte följer Riktlinjerna för Azure SDK. Vi kommer också att avsluta stödet för SBMP-protokollet, så du kommer inte längre att kunna använda det här protokollet efter den 30 september 2026. Migrera till de senaste Azure SDK-biblioteken, som erbjuder kritiska säkerhetsuppdateringar och förbättrade funktioner, före det datumet.
Även om de äldre biblioteken fortfarande kan användas efter den 30 september 2026 får de inte längre officiell support och uppdateringar från Microsoft. Mer information finns i meddelandet om supportavgång.
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 ServiceBusReceivedMessage kan 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 ServiceBusMessageActions
anger 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 en ServiceBusClient med andra typer från Azure.Messaging.ServiceBus direkt. Se Registrera Azure-klienter för ett exempel på hur du använder beroendeinmatning för att skapa en klienttyp från Azure SDK.
Tidigare versioner av tillägg i den isolerade arbetsprocessen stöder endast bindning till string
, byte[]
och JSON-serialiserbara typer. Ytterligare alternativ är tillgängliga för tillägg 5.x+.
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.
Fastighet |
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. |
maxfördröjning |
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. |
transporttyp |
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. 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. 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.
{
"version": "2.0",
"extensions": {
"serviceBus": {
"prefetchCount": 100,
"messageHandlerOptions": {
"autoComplete": true,
"maxConcurrentCalls": 32,
"maxAutoRenewDuration": "00:05:00"
},
"sessionHandlerOptions": {
"autoComplete": false,
"messageWaitTimeout": "00:00:30",
"maxAutoRenewDuration": "00:55:00",
"maxConcurrentSessions": 16
},
"batchOptions": {
"maxMessageCount": 1000,
"operationTimeout": "00:01:00",
"autoComplete": true
}
}
}
}
När du anger isSessionsEnabled
egenskapen eller attributet på utlösaren till true
, sessionHandlerOptions
respekteras den. När du anger isSessionsEnabled
egenskapen eller attributet på utlösaren till false
, messageHandlerOptions
respekteras den.
Fastighet |
Standardvärde |
Beskrivning |
prefetchCount |
0 |
Hämtar eller anger antalet meddelanden som meddelandemottagaren kan begära samtidigt. |
maxAutoRenewDuration |
00:05:00 |
Den maximala varaktighet inom vilken meddelandelåset förnyas automatiskt. |
komplettera automatiskt |
true |
Om utlösaren ska anropas automatiskt efter bearbetningen eller om funktionskoden manuellt anropar slutförd.
Inställningen till false stöds endast i C#.
När den är inställd true på slutför utlösaren meddelandet, sessionen eller batchen automatiskt när funktionskörningen har slutförts och avger meddelandet på annat sätt.
När du är inställd på ansvarar du för att false anropa ServiceBusReceiver-metoder för att slutföra, överge eller döda meddelandet, sessionen eller batchen. När ett undantag utlöses (och ingen av ServiceBusReceiver metoderna anropas) förblir låset kvar. När låset upphör att gälla placeras meddelandet i kö igen med det DeliveryCount inkrementerade och låset förnyas automatiskt.
I icke-C#-funktioner resulterar undantag i funktionen i körningsanropen abandonAsync i bakgrunden. Om inget undantag inträffar anropas det completeAsync i bakgrunden. |
maxConcurrentCalls |
16 |
Det maximala antalet samtidiga anrop till återanropet som meddelandepumpen ska initiera per skalad instans. Som standard bearbetar Functions-körningen flera meddelanden samtidigt. |
maxConcurrentSessions |
2000 |
Det maximala antalet sessioner som kan hanteras samtidigt per skalad instans. |
maxMessageCount |
1000 |
Det maximala antalet meddelanden som skickas till funktionen när de utlöses. |
operationTimeout |
00:01:00 |
Ett tidsintervallvärde uttryckt i hh:mm:ss . |
Nästa steg