Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 | Spouštěč |
| 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
Pokud chcete v aplikaci použít toto rozšíření vazeb, ujistěte se, že soubor host.json v kořenovém adresáři projektu obsahuje tento extensionBundle odkaz:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
V tomto příkladu version hodnota [4.0.0, 5.0.0) dává hostiteli Functions pokyn, aby používal verzi sady, která je alespoň 4.0.0 , ale menší než 5.0.0, která zahrnuje všechny potenciální verze 4.x. Tato notace efektivně udržuje vaši aplikaci na nejnovější dostupné podverzi sady rozšíření v4.x.
Pokud je to možné, měli byste použít nejnovější hlavní verzi sady rozšíření a umožnit modulu runtime automaticky udržovat nejnovější podverzi. Obsah nejnovější sady můžete zobrazit na stránce verze sady rozšíření. Další informace najdete v sadách rozšíření Azure Functions.
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.
Typy vazeb sady SDK
Typy sad SDK pro Azure Service Bus jsou ve verzi Preview. Pokud chcete začít používat typy sad SDK pro Service Bus v Pythonu, postupujte podle vazeb sady Python SDK pro službu Service Bus .
Důležité
Použití vazeb typu sady SDK vyžaduje programovací model Pythonu v2.
| Závazný | Typy parametrů | Vzorky |
|---|---|---|
| Aktivační událost ServiceBus | ServiceBusReceivedMessage | ServiceBusReceivedMessage |
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. |
| maxZpoždění | 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. |
| typ dopravy | 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é přijímají jednu zprávu najednou a nevztahují se na funkce, které přijímají dávku zpráv. U dávek je maximální doba trvání nastavená ve službě Service Bus na úrovni fronty nebo předplatného. |
| maxConcurrentCalls | 16 |
Modul runtime služby Functions ve výchozím nastavení zpracovává více zpráv současně. Toto nastavení omezuje maximální počet souběžných volání na zpětné volání, které lze zahájit pro každou instanci se škálováním. Pokud má váš plán hostování více než jedno jádro na instanci, maximální počet volání se efektivně vynásobí počtem jader. Například v plánu, který běží na hardwaru se dvěma jádry, výchozí nastavení 16 znamená, že maximální počet souběžných volání na instanci je skutečně 32 (nebo 2 * 16). 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, a ne v dávce. |
| 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.0Microsoft.Azure.WebJobs.Extensions.ServiceBus balíčku nebo novější verzi.