Azure Service Bus-bindingen voor Azure Functions

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 Type
Een functie uitvoeren wanneer een Service Bus-wachtrij of onderwerpbericht wordt gemaakt Trigger
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:

Functies worden uitgevoerd in een geïsoleerd C#-werkproces. Zie De handleiding voor het uitvoeren van C# Azure Functions in een geïsoleerd werkproces voor meer informatie.

Voeg de extensie toe aan uw project dat dit NuGet-pakket installeert.

De functionaliteit van de extensie varieert afhankelijk van de extensieversie:

Deze versie introduceert de mogelijkheid om verbinding te maken met behulp van een identiteit in plaats van een geheim. Zie de zelfstudie over het maken van een functie-app met op identiteit gebaseerde verbindingen voor een zelfstudie over het configureren van uw functie-apps met beheerde identiteiten.

Met deze versie kunt u verbinding maken met typen van Azure.Messaging.ServiceBus.

Voeg de extensie toe aan uw project door het NuGet-pakket versie 5.x te installeren.

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.

Deze versie introduceert de mogelijkheid om verbinding te maken met behulp van een identiteit in plaats van een geheim. Zie de zelfstudie over het maken van een functie-app met op identiteit gebaseerde verbindingen voor een zelfstudie over het configureren van uw functie-apps met beheerde identiteiten.

U kunt deze versie van de extensie toevoegen vanuit de extensiebundel v3 door de volgende code toe te voegen of te vervangen in uw host.json bestand:

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

Zie Uw extensies bijwerken voor meer informatie.

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.

Kies een versie om de details van het bindingstype voor de modus en versie weer te geven.

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:

Type Description
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:

Type Description
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 deAutoCompleteMessageseigenschap 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:

Type Description
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:

Type Description
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 rechtstreeks typen van Azure.Messaging.ServiceBus .

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.
Vertraging 00:00:00.80 De vertragings- of uitstelfactor die moet worden toegepast tussen nieuwe pogingen.
maxDelay 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.
transportType 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 is ingesteld falseop . 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 is ingesteld trueop . 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.

Volgende stappen