Sdílet prostřednictvím


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.

Další kroky