Azure Functions kan worden geïntegreerd met Azure Service Bus via triggers en bindingen. Door te integreren met Service Bus kunt u functies bouwen die reageren op wachtrij- of onderwerpberichten en deze verzenden.
Actie |
Typologie |
Een functie uitvoeren wanneer een Service Bus-wachtrij of onderwerpbericht wordt gemaakt |
Trekker |
Azure Service Bus-berichten verzenden |
Uitvoerbinding |
De extensie installeren
Het NuGet-extensiepakket dat u installeert, is afhankelijk van de C#-modus die u gebruikt in uw functie-app:
De functionaliteit van de extensie varieert afhankelijk van de extensieversie:
Als u met de trigger en bindingen werkt, moet u verwijzen naar het juiste NuGet-pakket. Installeer nuGet-pakket, versies < 5.x.
Voeg de extensie toe aan uw project door het NuGet-pakket versie 4.x te installeren.
Functions versie 1.x biedt geen ondersteuning voor het geïsoleerde werkproces.
Bundel installeren
De Service Bus-binding maakt deel uit van een extensiebundel, die is opgegeven in uw host.json projectbestand. Mogelijk moet u deze bundel wijzigen om de versie van de binding te wijzigen of als bundels nog niet zijn geïnstalleerd. Zie uitbreidingsbundel voor meer informatie.
U kunt deze versie van de extensie installeren in uw functie-app door de extensiebundel, versie 2.x, te registreren.
Functions 1.x-apps hebben automatisch een verwijzing naar de extensie.
Bindingstypen
De bindingstypen die worden ondersteund voor .NET zijn afhankelijk van zowel de extensieversie als de C#-uitvoeringsmodus. Dit kan een van de volgende zijn:
Een geïsoleerde werkprocesklassebibliotheek gecompileerde C#-functie wordt uitgevoerd in een proces dat is geïsoleerd van de runtime.
Een in-process-klassebibliotheek is een gecompileerde C#-functie die wordt uitgevoerd in hetzelfde proces als de Functions-runtime.
Kies een versie om de details van het bindingstype voor de modus en versie weer te geven.
De Service Bus-extensie ondersteunt parametertypen volgens de onderstaande tabel.
1 Berichten met JSON-gegevens kunnen worden gedeserialiseerd in bekende, oude CLR-objecttypen (POCO).
2 Geavanceerde scenario's omvatten berichtafhandeling, sessies en transacties. Deze typen zijn beschikbaar als afzonderlijke parameters naast de normale triggerparameter.
Eerdere versies van de extensie weergegeven typen uit de nu afgeschafte Microsoft.Azure.ServiceBus-naamruimte . Nieuwere typen van Azure.Messaging.ServiceBus zijn exclusief voor Extension 5.x+.
Op 30 september 2026 gaan we de Azure Service Bus SDK-bibliotheken WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus en com.microsoft.azure.servicebus buiten gebruik stellen, die niet voldoen aan de Azure SDK-richtlijnen. We beëindigen ook de ondersteuning van het SBMP-protocol, zodat u dit protocol na 30 september 2026 niet meer kunt gebruiken. Migreer naar de nieuwste Azure SDK-bibliotheken, die vóór die datum essentiële beveiligingsupdates en verbeterde mogelijkheden bieden.
Hoewel de oudere bibliotheken nog steeds meer dan 30 september 2026 kunnen worden gebruikt, ontvangen ze geen officiële ondersteuning en updates meer van Microsoft. Zie de aankondiging van de buitengebruikstelling van de ondersteuning voor meer informatie.
Deze versie van de extensie ondersteunt parametertypen volgens de onderstaande tabel.
De Service Bus-extensie ondersteunt parametertypen volgens de onderstaande tabel.
Bindingsscenario |
Parametertypen |
Service Bus-trigger (één bericht) |
[Microsoft.Azure.ServiceBus.Message]
string
byte[] JSON serialiseerbare typen1 |
Service Bus-trigger (berichtenbatch) |
ServiceBusReceivedMessage[]
string[] |
Geavanceerde scenario's voorService Bus-trigger 2 |
IMessageReceiver
MessageReceiver
IMessageSession
|
Service Bus-uitvoer (één bericht) |
Bericht
string
byte[] JSON serialiseerbare typen1 |
Service Bus-uitvoer (meerdere berichten) |
ICollector<T> of IAsyncCollector<T> waar T een van de typen berichten is
MessageSender |
1 Berichten met JSON-gegevens kunnen worden gedeserialiseerd in bekende, oude CLR-objecttypen (POCO).
2 Geavanceerde scenario's omvatten berichtafhandeling, sessies en transacties. Deze typen zijn beschikbaar als afzonderlijke parameters naast de normale triggerparameter.
Functies 1.x weergegeven typen uit de afgeschafte Microsoft.ServiceBus.Messaging-naamruimte . Nieuwere typen van Azure.Messaging.ServiceBus zijn exclusief voor Extension 5.x+. Als u deze wilt gebruiken, moet u uw toepassing upgraden naar Functions 4.x.
Op 30 september 2026 gaan we de Azure Service Bus SDK-bibliotheken WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus en com.microsoft.azure.servicebus buiten gebruik stellen, die niet voldoen aan de Azure SDK-richtlijnen. We beëindigen ook de ondersteuning van het SBMP-protocol, zodat u dit protocol na 30 september 2026 niet meer kunt gebruiken. Migreer naar de nieuwste Azure SDK-bibliotheken, die vóór die datum essentiële beveiligingsupdates en verbeterde mogelijkheden bieden.
Hoewel de oudere bibliotheken nog steeds meer dan 30 september 2026 kunnen worden gebruikt, ontvangen ze geen officiële ondersteuning en updates meer van Microsoft. Zie de aankondiging van de buitengebruikstelling van de ondersteuning voor meer informatie.
Het geïsoleerde werkproces ondersteunt parametertypen volgens de onderstaande tabellen.
Service Bus-trigger
Wanneer u wilt dat de functie één bericht verwerkt, kan de Service Bus-trigger worden gekoppeld aan de volgende typen:
Typologie |
Beschrijving |
string |
Het bericht als tekenreeks. Gebruik dit bericht wanneer het bericht eenvoudige tekst is. |
byte[] |
De bytes van het bericht. |
JSON serialiseerbare typen |
Wanneer een gebeurtenis JSON-gegevens bevat, probeert Functions deSerialiseren van de JSON-gegevens in een niet-oud POCO-type (CLR-object). |
ServiceBusReceivedMessage1 |
Het berichtobject.
Wanneer u een binding aan hebtServiceBusReceivedMessage , kunt u eventueel ook een parameter van het type ServiceBusMessageActions 1,2 opnemen om berichtafhandelingsacties uit te voeren. |
Wanneer u wilt dat de functie een batch berichten verwerkt, kan de Service Bus-trigger worden gekoppeld aan de volgende typen:
Typologie |
Beschrijving |
T[] waarbij T een van de typen één bericht is |
Een matrix met gebeurtenissen uit de batch. Elke vermelding vertegenwoordigt één gebeurtenis.
Wanneer u een binding aan hebtServiceBusReceivedMessage[] , kunt u eventueel ook een parameter van het type ServiceBusMessageActions 1,2 opnemen om berichtafhandelingsacties uit te voeren. |
1 Als u deze typen wilt gebruiken, moet u verwijzen naar Microsoft.Azure.Functions.Worker.Extensions.ServiceBus 5.14.1 of hoger en de algemene afhankelijkheden voor SDK-typebindingen.
2 Wanneer u het gebruiktServiceBusMessageActions
, stelt u deAutoCompleteMessages
eigenschap van het triggerkenmerk in op false
. Hiermee voorkomt u dat de runtime berichten probeert te voltooien na een geslaagde aanroep van een functie.
Service Bus-uitvoerbinding
Wanneer u wilt dat de functie één bericht schrijft, kan de Service Bus-uitvoerbinding worden gekoppeld aan de volgende typen:
Typologie |
Beschrijving |
string |
Het bericht als tekenreeks. Gebruik dit bericht wanneer het bericht eenvoudige tekst is. |
byte[] |
De bytes van het bericht. |
JSON serialiseerbare typen |
Een object dat het bericht vertegenwoordigt. Functions probeert een normaal oud CLR-objecttype (POCO) te serialiseren in JSON-gegevens. |
Wanneer u wilt dat de functie meerdere berichten schrijft, kan de Service Bus-uitvoerbinding worden gekoppeld aan de volgende typen:
Typologie |
Beschrijving |
T[] waarbij T een van de typen één bericht is |
Een matrix met meerdere berichten. Elk item vertegenwoordigt één bericht. |
Voor andere uitvoerscenario's maakt en gebruikt u een ServiceBusClient met andere typen rechtstreeks vanuit Azure.Messaging.ServiceBus . Zie Azure-clients registreren voor een voorbeeld van het gebruik van afhankelijkheidsinjectie om een clienttype te maken op basis van de Azure SDK.
Eerdere versies van extensies in het geïsoleerde werkproces ondersteunen alleen bindingsstring
byte[]
- en JSON-serialiseerbare typen. Er zijn extra opties beschikbaar voor Extension 5.x+.
host.json-instellingen
In deze sectie worden de configuratie-instellingen beschreven die beschikbaar zijn voor deze binding, afhankelijk van de runtime- en extensieversie.
{
"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
}
}
}
De clientRetryOptions
instellingen zijn alleen van toepassing op interacties met de Service Bus-service. Ze hebben geen invloed op nieuwe pogingen van functie-uitvoeringen. Zie Nieuwe pogingen voor meer informatie.
Eigenschappen |
Standaard |
Beschrijving |
modus |
Exponential |
De methode die moet worden gebruikt voor het berekenen van vertragingen voor opnieuw proberen. De standaard exponentiële modus probeert nieuwe pogingen met een vertraging op basis van een back-off-strategie waarbij elke poging de wachttijd verhoogt voordat u het opnieuw probeert. De Fixed modus probeert nieuwe pogingen uit te voeren met vaste intervallen, waarbij elke vertraging een consistente duur heeft. |
tryTimeout |
00:01:00 |
De maximale duur om te wachten op een bewerking per poging. |
uitstellen |
00:00:00.80 |
De vertragings- of uitstelfactor die moet worden toegepast tussen nieuwe pogingen. |
maxVertraging |
00:01:00 |
De maximale vertraging die moet worden toegestaan tussen nieuwe pogingen |
maxRetries |
3 |
Het maximum aantal nieuwe pogingen voordat de gekoppelde bewerking is mislukt. |
prefetchCount |
0 |
Hiermee haalt of stelt u het aantal berichten in dat de ontvanger tegelijk kan aanvragen. |
vervoerstype |
amqpTcp |
Het protocol en het transport dat wordt gebruikt voor de communicatie met Service Bus. Beschikbare opties: amqpTcp , amqpWebSockets |
webProxy |
n.v.t. |
De proxy die moet worden gebruikt voor communicatie met Service Bus via websockets. Een proxy kan niet worden gebruikt met het amqpTcp transport. |
autoCompleteMessages |
true |
Bepaalt of berichten na een geslaagde uitvoering van de functie al dan niet automatisch moeten worden voltooid. |
maxAutoLockRenewalDuration |
00:05:00 |
De maximale duur waarin de berichtvergrendeling automatisch wordt vernieuwd. Deze instelling geldt alleen voor functies die één bericht tegelijk ontvangen. |
maxConcurrentCalls |
16 |
Het maximum aantal gelijktijdige aanroepen naar de callback die per geschaald exemplaar moet worden gestart. Standaard verwerkt de Functions-runtime meerdere berichten gelijktijdig. Deze instelling wordt alleen gebruikt wanneer de isSessionsEnabled eigenschap of het kenmerk van de trigger. Deze instelling geldt alleen voor functies die één bericht tegelijk ontvangen. |
maxConcurrentSessions |
8 |
Het maximum aantal sessies dat gelijktijdig per geschaald exemplaar kan worden verwerkt. Deze instelling wordt alleen gebruikt wanneer de isSessionsEnabled eigenschap of het kenmerk van de trigger. Deze instelling geldt alleen voor functies die één bericht tegelijk ontvangen. |
maxMessageBatchSize |
1000 |
Het maximum aantal berichten dat wordt doorgegeven aan elke functie-aanroep. Deze instelling is alleen van toepassing op functies die een batch berichten ontvangen. |
minMessageBatchSize1 |
1 |
Het minimale aantal berichten dat in een batch is gewenst. Het minimum geldt alleen wanneer de functie meerdere berichten ontvangt en kleiner moet zijn dan maxMessageBatchSize . De minimale grootte is niet strikt gegarandeerd. Een gedeeltelijke batch wordt verzonden wanneer een volledige batch niet kan worden voorbereid voordat de maxBatchWaitTime batch is verstreken. |
maxBatchWaitTime1 |
00:00:30 |
Het maximale interval dat de trigger moet wachten om een batch te vullen voordat de functie wordt aangeroepen. De wachttijd wordt alleen overwogen wanneer minMessageBatchSize deze groter is dan 1 en anders wordt genegeerd. Als er minder berichten minMessageBatchSize beschikbaar waren voordat de wachttijd is verstreken, wordt de functie aangeroepen met een gedeeltelijke batch. De langst toegestane wachttijd is 50% van de duur van de vergrendeling van het entiteitsbericht, wat betekent dat het maximaal toegestane aantal minuten en 30 seconden is. Anders krijgt u mogelijk vergrendelings uitzonderingen.
OPMERKING: Dit interval is geen strikte garantie voor de exacte timing waarop de functie wordt aangeroepen. Er is een kleine foutmarge vanwege de precisie van de timer. |
sessionIdleTimeout |
n.v.t. |
De maximale hoeveelheid tijd die moet worden gewacht totdat een bericht wordt ontvangen voor de momenteel actieve sessie. Nadat deze tijd is verstreken, wordt de sessie gesloten en probeert de functie een andere sessie te verwerken. |
enableCrossEntityTransactions |
false |
Hiermee wordt aangegeven of transacties die meerdere entiteiten in een Service Bus-naamruimte omvatten, al dan niet moeten worden ingeschakeld. |
1 Gebruikt minMessageBatchSize
en maxBatchWaitTime
vereist v5.10.0 van het Microsoft.Azure.WebJobs.Extensions.ServiceBus
pakket of een latere versie.
{
"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
}
}
}
}
Wanneer u de isSessionsEnabled
eigenschap of het kenmerk voor de trigger, wordt de eigenschap of het true
kenmerk geëerd. Wanneer u de isSessionsEnabled
eigenschap of het kenmerk voor de trigger, wordt de eigenschap of het false
kenmerk geëerd.
Eigenschappen |
Standaard |
Beschrijving |
prefetchCount |
0 |
Hiermee haalt of stelt u het aantal berichten in dat de ontvanger tegelijk kan aanvragen. |
maxAutoRenewDuration |
00:05:00 |
De maximale duur waarin de berichtvergrendeling automatisch wordt vernieuwd. |
automatisch aanvullen |
true |
Of de trigger na verwerking automatisch moet worden aangeroepen of dat de functiecode handmatig wordt aangeroepen.
Instelling hiervoor false wordt alleen ondersteund in C#.
Wanneer de trigger is ingesteld true , wordt het bericht, de sessie of de batch automatisch voltooid wanneer de uitvoering van de functie is voltooid en wordt het bericht op een andere manier afgelaten.
Als dit is ingesteld false , bent u verantwoordelijk voor het aanroepen van ServiceBusReceiver-methoden om het bericht, de sessie of de batch te voltooien, af te geven of in een deadletter te plaatsen. Wanneer er een uitzondering wordt gegenereerd (en geen van de ServiceBusReceiver methoden wordt aangeroepen), blijft de vergrendeling behouden. Zodra de vergrendeling is verlopen, wordt het bericht opnieuw in de wachtrij geplaatst met de DeliveryCount incrementele en wordt de vergrendeling automatisch vernieuwd.
In niet-C#-functies leiden uitzonderingen in de functie tot de runtime-aanroepen abandonAsync op de achtergrond. Als er geen uitzondering optreedt, wordt deze completeAsync op de achtergrond aangeroepen. |
maxConcurrentCalls |
16 |
Het maximum aantal gelijktijdige aanroepen naar de callback dat de berichtpomp per geschaald exemplaar moet initiëren. Standaard verwerkt de Functions-runtime meerdere berichten gelijktijdig. |
maxConcurrentSessions |
2000 |
Het maximum aantal sessies dat gelijktijdig per geschaald exemplaar kan worden verwerkt. |
maxMessageCount |
1000 |
Het maximum aantal berichten dat naar de functie wordt verzonden wanneer deze wordt geactiveerd. |
operationTimeout |
00:01:00 |
Een tijdspannewaarde uitgedrukt in hh:mm:ss . |
Volgende stappen