Vazby služby Azure Service Bus pro Azure Functions
Azure Functions se integruje se službou Azure Service Bus prostřednictvím triggerů a vazeb. Integrace se službou Service Bus umožňuje vytvářet funkce, které reagují na zprávy fronty nebo tématu a odesílají je.
Akce | Typ |
---|---|
Spuštění funkce při vytvoření fronty nebo tématu služby Service Bus | Trigger |
Odesílání zpráv služby Azure Service Bus | Výstupní vazba |
Instalace rozšíření
Balíček NuGet rozšíření, který nainstalujete, závisí na režimu jazyka C#, který používáte ve své aplikaci funkcí:
Funkce se spouštějí v izolovaném pracovním procesu C#. Další informace najdete v průvodci spuštěním služby Azure Functions v jazyce C# v izolovaném pracovním procesu.
Přidejte do projektu rozšíření, které nainstaluje tento balíček NuGet.
Funkce rozšíření se liší v závislosti na verzi rozšíření:
Tato verze představuje možnost připojení pomocí identity místo tajného kódu. Kurz konfigurace aplikací funkcí se spravovanými identitami najdete v kurzu vytvoření aplikace funkcí s připojeními založenými na identitách.
Tato verze umožňuje svázat typy z Azure.Messaging.ServiceBus.
Tato verze podporuje konfiguraci triggerů a vazeb prostřednictvím integrace .NET Aspire.
Přidejte rozšíření do projektu instalací balíčku NuGet verze 5.x.
Instalace sady
Vazba služby Service Bus je součástí sady rozšíření, která je zadaná v souboru projektu host.json. Možná budete muset tuto sadu upravit, aby se změnila verze vazby, nebo pokud sady ještě nejsou nainstalované. Další informace najdete v sadě rozšíření.
Tato verze představuje možnost připojení pomocí identity místo tajného kódu. Kurz konfigurace aplikací funkcí se spravovanými identitami najdete v kurzu vytvoření aplikace funkcí s připojeními založenými na identitách.
Tuto verzi rozšíření můžete přidat z sady rozšíření v3 přidáním nebo nahrazením následujícího kódu v host.json
souboru:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.3.0, 4.0.0)"
}
}
Další informace najdete v tématu Aktualizace rozšíření.
Typy vazeb
Typy vazeb podporované pro .NET závisí na režimu spouštění rozšíření i jazyka C#, což může být jedna z následujících možností:
Kompilovaná funkce C# v izolované knihovně tříd pracovních procesů běží v procesu izolovaném od modulu runtime.
Zvolte verzi a zobrazte podrobnosti o typu vazby pro režim a verzi.
Izolovaný pracovní proces podporuje typy parametrů podle následujících tabulek.
Trigger služby Service Bus
Pokud chcete, aby funkce zpracovávala jednu zprávu, může trigger služby Service Bus svázat s následujícími typy:
Typ | Popis |
---|---|
string |
Zpráva jako řetězec. Používá se, když je zpráva jednoduchá. |
byte[] |
Bajty zprávy. |
Serializovatelné typy JSON | Když událost obsahuje data JSON, functions se pokusí deserializovat data JSON do prostého typu objektu CLR (POCO). |
ServiceBusReceivedMessage1 | Objekt zprávy. Při vazbě na ServiceBusReceivedMessage , můžete volitelně zahrnout také parametr typu ServiceBusMessageActions1,2 pro provádění akcí vypořádání zpráv. |
Pokud chcete, aby funkce zpracovávala dávku zpráv, může trigger služby Service Bus svázat s následujícími typy:
Typ | Popis |
---|---|
T[] where T is one of the single message types |
Pole událostí z dávky. Každá položka představuje jednu událost. Při vazbě na ServiceBusReceivedMessage[] , můžete volitelně zahrnout také parametr typu ServiceBusMessageActions1,2 pro provádění akcí vypořádání zpráv. |
1 Pokud chcete použít tyto typy, musíte odkazovat na Microsoft.Azure.Functions.Worker.Extensions.ServiceBus 5.14.1 nebo novější a běžné závislosti pro vazby typu sady SDK.
2 Při použití ServiceBusMessageActions
, nastavte AutoCompleteMessages
vlastnost trigger atributu na false
. To brání modulu runtime v pokusu o dokončení zpráv po úspěšném vyvolání funkce.
Výstupní vazba služby Service Bus
Pokud chcete, aby funkce zapisuje jednu zprávu, výstupní vazba služby Service Bus může svázat s následujícími typy:
Typ | Popis |
---|---|
string |
Zpráva jako řetězec. Používá se, když je zpráva jednoduchá. |
byte[] |
Bajty zprávy. |
Serializovatelné typy JSON | Objekt představující zprávu. Funkce se pokusí serializovat prostý starý typ objektu CLR (POCO) do dat JSON. |
Pokud chcete, aby funkce zapisuje více zpráv, výstupní vazba služby Service Bus může svázat s následujícími typy:
Typ | Popis |
---|---|
T[] where T is one of the single message types |
Pole obsahující více zpráv. Každá položka představuje jednu zprávu. |
V případě jiných výstupních scénářů vytvořte a použijte ServiceBusClient s jinými typy přímo z Azure.Messaging.ServiceBus . Příklad použití injektáže závislostí k vytvoření typu klienta ze sady Azure SDK najdete v tématu Registrace klientů Azure.
nastavení host.json
Tato část popisuje nastavení konfigurace dostupné pro tuto vazbu, které závisí na modulu runtime a verzi rozšíření.
{
"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
}
}
}
Nastavení clientRetryOptions
platí jenom pro interakce se službou Service Bus. Nemají vliv na opakované pokusy o spuštění funkcí. Další informace najdete v tématu Opakování.
Vlastnost | Výchozí | Popis |
---|---|---|
režim | Exponential |
Přístup k výpočtu zpoždění opakování. Výchozí exponenciální režim opakuje pokusy se zpožděním na základě strategie zpětného vypnutí, kdy každý pokus zvýší dobu čekání před opakováním. Režim Fixed opakuje pokusy v pevných intervalech s tím, že každé zpoždění má konzistentní dobu trvání. |
tryTimeout | 00:01:00 |
Maximální doba trvání čekání na operaci na pokus. |
zpoždění | 00:00:00.80 |
Faktor zpoždění nebo zpětného vypnutí, který se má použít mezi opakovanými pokusy. |
maxDelay | 00:01:00 |
Maximální zpoždění povolení mezi opakovanými pokusy |
maxRetries | 3 |
Maximální počet pokusů o opakování před zvážením přidružené operace, která selhala. |
prefetchCount | 0 |
Získá nebo nastaví počet zpráv, které příjemce zprávy může současně požádat. |
transportType | amqpTcp | Protokol a přenos, který se používá pro komunikaci se službou Service Bus. Dostupné možnosti: amqpTcp , amqpWebSockets |
webProxy | Není k dispozici | Proxy server, který se má použít pro komunikaci se službou Service Bus přes webové sokety. Proxy server nelze použít s přenosem amqpTcp . |
autoCompleteMessages | true |
Určuje, zda se mají automaticky dokončit zprávy po úspěšném spuštění funkce. |
maxAutoLockRenewalDuration | 00:05:00 |
Maximální doba trvání, během které se zámek zprávy obnoví automaticky. Toto nastavení platí jenom pro funkce, které obdrží jednu zprávu najednou. |
maxConcurrentCalls | 16 |
Maximální počet souběžných volání zpětného volání, která by se měla zahájit na škálovanou instanci. Modul runtime služby Functions ve výchozím nastavení zpracovává více zpráv současně. Toto nastavení se používá pouze v případě, že isSessionsEnabled je vlastnost nebo atribut triggeru nastaven na false . Toto nastavení platí jenom pro funkce, které obdrží jednu zprávu najednou. |
maxConcurrentSessions | 8 |
Maximální počet relací, které lze zpracovávat souběžně na škálovanou instanci. Toto nastavení se používá pouze v případě, že isSessionsEnabled je vlastnost nebo atribut triggeru nastaven na true . Toto nastavení platí jenom pro funkce, které obdrží jednu zprávu najednou. |
maxMessageBatchSize | 1000 |
Maximální počet zpráv, které budou předány každému volání funkce. Toto nastavení platí jenom pro funkce, které přijímají dávku zpráv. |
minMessageBatchSize1 | 1 |
Minimální počet zpráv požadovaných v dávce Minimum platí pouze v případech, kdy funkce přijímá více zpráv a musí být menší než maxMessageBatchSize . Minimální velikost není striktně zaručená. Částečná dávka se odešle, když se nedá připravit úplná dávka, než maxBatchWaitTime uplynou. |
maxBatchWaitTime1 | 00:00:30 |
Maximální interval, po který má trigger čekat na vyplnění dávky před vyvoláním funkce. Doba čekání se považuje pouze v případě, že minMessageBatchSize je větší než 1 a jinak se ignoruje. Pokud bylo před uplynutím doby čekání k dispozici méně než minMessageBatchSize zprávy, funkce se vyvolá s částečnou dávkou. Nejdelší povolená doba čekání je 50 % doby trvání uzamčení zprávy entity, což znamená, že maximální povolená doba je 2 minuty a 30 sekund. Jinak může dojít k výjimkám zámků. POZNÁMKA: Tento interval není striktní zárukou přesného načasování, kdy je funkce vyvolána. Kvůli přesnosti časovače existuje malý okraj chyby. |
sessionIdleTimeout | Není k dispozici | Maximální doba čekání na přijetí zprávy pro aktuálně aktivní relaci. Po uplynutí této doby se relace zavře a funkce se pokusí zpracovat jinou relaci. |
enableCrossEntityTransactions | false |
Určuje, jestli chcete povolit transakce, které zahrnují více entit v oboru názvů služby Service Bus. |
1 Použití minMessageBatchSize
a maxBatchWaitTime
vyžaduje v5.10.0 Microsoft.Azure.WebJobs.Extensions.ServiceBus
balíčku nebo novější verzi.