Trigger a vazby služby Azure Event Hubs pro Azure Functions
Tento článek vysvětluje, jak pracovat s vazbami služby Azure Event Hubs pro Azure Functions. Azure Functions podporuje aktivační a výstupní vazby pro službu Event Hubs.
Akce | Typ |
---|---|
Reakce na události odeslané do streamu událostí centra událostí. | Trigger |
Zápis událostí do streamu událostí | 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.
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 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
Rozšíření Event Hubs 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. Podpora vazby na typy z Azure.Messaging.EventHubs je ve verzi Preview.
Trigger služby Event Hubs
Pokud chcete, aby funkce zpracovávala jednu událost, trigger Event Hubs může svázat s následujícími typy:
Typ | Popis |
---|---|
string |
Událost jako řetězec. Použije se, když je událost jednoduchý text. |
byte[] |
Bajty události. |
Serializovatelné typy JSON | Když událost obsahuje data JSON, functions se pokusí deserializovat data JSON do prostého typu objektu CLR (POCO). |
Azure.Messaging.EventHubs.EventData1 | Objekt události. Pokud migrujete ze starších verzí sad SDK služby Event Hubs, mějte na paměti, že tato verze zahodí podporu staršího Body typu ve prospěch EventBody. |
Pokud chcete, aby funkce zpracovávala dávku událostí, trigger Event Hubs může svázat s následujícími typy:
Typ | Popis |
---|---|
string[] |
Pole událostí z dávky jako řetězce. Každá položka představuje jednu událost. |
EventData[] 1 |
Pole událostí z dávky, jako instance Azure.Messaging.EventHubs.EventData. Každá položka představuje jednu událost. |
T[] where T je serializovatelný typJSON 1 |
Pole událostí z dávky jako instance vlastního typu POCO. Každá položka představuje jednu událost. |
1 Pokud chcete použít tyto typy, musíte odkazovat na Microsoft.Azure.Functions.Worker.Extensions.EventHubs 5.5.0 nebo novější a běžné závislosti pro vazby typu sady SDK.
Výstupní vazba služby Event Hubs
Pokud chcete, aby funkce zapisuje jednu událost, výstupní vazba služby Event Hubs může svázat s následujícími typy:
Typ | Popis |
---|---|
string |
Událost jako řetězec. Použije se, když je událost jednoduchý text. |
byte[] |
Bajty události. |
Serializovatelné typy JSON | Objekt představující událost. Funkce se pokusí serializovat prostý starý typ objektu CLR (POCO) do dat JSON. |
Pokud chcete, aby funkce zapisuje více událostí, výstupní vazba služby Event Hubs může svázat s následujícími typy:
Typ | Popis |
---|---|
T[] where T is one of the single event types |
Pole obsahující více událostí. Každá položka představuje jednu událost. |
Pro jiné výstupní scénáře vytvořte a použijte EventHubProducerClient s jinými typy z Azure.Messaging.EventHubs přímo. 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
Soubor host.json obsahuje nastavení, která řídí chování triggeru služby Event Hubs. Konfigurace se liší v závislosti na verzi rozšíření.
{
"version": "2.0",
"extensions": {
"eventHubs": {
"maxEventBatchSize" : 100,
"minEventBatchSize" : 25,
"maxWaitTime" : "00:05:00",
"batchCheckpointFrequency" : 1,
"prefetchCount" : 300,
"transportType" : "amqpWebSockets",
"webProxy" : "https://proxyserver:8080",
"customEndpointAddress" : "amqps://company.gateway.local",
"targetUnprocessedEventThreshold" : 75,
"initialOffsetOptions" : {
"type" : "fromStart",
"enqueuedTimeUtc" : ""
},
"clientRetryOptions":{
"mode" : "exponential",
"tryTimeout" : "00:01:00",
"delay" : "00:00:00.80",
"maximumDelay" : "00:01:00",
"maximumRetries" : 3
}
}
}
}
Vlastnost | Výchozí | Popis |
---|---|---|
maxEventBatchSize2 | 100 | Maximální počet událostí zahrnutých v dávce pro jedno vyvolání. Musí být alespoň 1. |
minEventBatchSize1 | 0 | Minimální počet událostí požadovaných v dávce Minimum platí pouze v případech, kdy funkce přijímá více událostí a musí být menší než maxEventBatchSize .Minimální velikost není striktně zaručená. Částečná dávka se odešle, když se nedá připravit úplná dávka, než maxWaitTime uplynou. Částečné dávky jsou také pravděpodobné pro první vyvolání funkce po provedení škálování. |
maxWaitTime1 | 00:01:00 | 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 minEventBatchSize je větší než 1 a jinak se ignoruje. Pokud bylo před uplynutím doby čekání k dispozici méně než minEventBatchSize události, vyvolá se funkce s částečnou dávkou. Nejdelší povolená doba čekání je 10 minut.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. Při škálování může dojít k prvnímu vyvolání s částečnou dávkou rychleji nebo může trvat až dvakrát nakonfigurovanou dobu čekání. |
batchCheckpointFrequency | 0 | Počet dávek, které se mají zpracovat před vytvořením kontrolního bodu centra událostí. |
prefetchCount | 300 | Počet událostí, které jsou dychtivě požadovány ze služby Event Hubs a uloženy v místní mezipaměti, aby se čtení zabránilo čekání na síťové operaci |
transportType | amqpTcp | Protokol a přenos, který se používá pro komunikaci se službou Event Hubs. Dostupné možnosti: amqpTcp , amqpWebSockets |
webProxy | null | Proxy server, který se má použít pro komunikaci se službou Event Hubs přes webové sokety. Proxy server nelze použít s přenosem amqpTcp . |
customEndpointAddress | null | Adresa, která se má použít při navazování připojení ke službě Event Hubs, což umožňuje směrování síťových požadavků přes aplikační bránu nebo jinou cestu potřebnou pro hostitelské prostředí. Plně kvalifikovaný obor názvů centra událostí je stále potřeba při použití vlastní adresy koncového bodu a musí být zadán explicitně nebo prostřednictvím připojovací řetězec. |
targetUnprocessedEventThreshold1 | null | Požadovaný počet nezpracovaných událostí na instanci funkce. Prahová hodnota se používá v cílovém škálování k přepsání výchozí prahové hodnoty škálování odvozené z maxEventBatchSize možnosti. Při nastavení se celkový počet nezpracovaných událostí vydělí touto hodnotou, aby bylo možné určit počet potřebných instancí funkce. Počet instancí se zaokrouhlí nahoru na číslo, které vytvoří vyváženou distribuci oddílů. |
initialOffsetOptions/type | fromStart | Umístění ve streamu událostí, které se má začít zpracovávat, když kontrolní bod v úložišti neexistuje. Platí pro všechny oddíly. Další informace najdete v dokumentaci k typu OffsetType. Dostupné možnosti: fromStart , fromEnd , fromEnqueuedTime |
initialOffsetOptions/enqueuedTimeUtc | null | Určuje čas zařazení události do datového proudu, ze kterého se má zahájit zpracování. Pokud initialOffsetOptions/type je toto nastavení nakonfigurováno jako fromEnqueuedTime , je toto nastavení povinné. Podporuje čas v libovolném formátu podporovaném dateTime.Parse (), například 2020-10-26T20:31Z . Pro přehlednost byste měli také zadat časové pásmo. Pokud není zadané časové pásmo, funkce předpokládá místní časové pásmo počítače, na kterém běží aplikace funkcí, což je UTC při spuštění v Azure. |
clientRetryOptions/mode | exponenciální | Přístup k výpočtu zpoždění opakování. Exponenciální režim opakuje pokusy se zpožděním na základě strategie zpětného vypnutí, kde každý pokus zvýší dobu, po kterou čeká před opakováním. Pevný režim opakuje pokusy v pevných intervalech s každou prodlevou, která má konzistentní dobu trvání. Dostupné možnosti: exponential , fixed |
clientRetryOptions/tryTimeout | 00:01:00 | Maximální doba trvání čekání na dokončení operace služby Event Hubs na pokus. |
clientRetryOptions/delay | 00:00:00.80 | Faktor zpoždění nebo zpětného vypnutí, který se má použít mezi opakovanými pokusy. |
clientRetryOptions/maximumDelay | 00:00:01 | Maximální prodleva, která se povolí mezi opakovanými pokusy. |
clientRetryOptions/maximumRetries | 3 | Maximální počet pokusů o opakování před zvážením přidružené operace, která selhala. |
1 Použití minEventBatchSize
a maxWaitTime
vyžaduje v5.3.0 Microsoft.Azure.WebJobs.Extensions.EventHubs
balíčku nebo novější verzi.
2 Výchozí změna v balíčku verze 6.0.0Microsoft.Azure.WebJobs.Extensions.EventHubs
.maxEventBatchSize
Ve starších verzích to bylo 10.
Slouží clientRetryOptions
k opakování operací mezi hostitelem služby Functions a službou Event Hubs (například načítání událostí a odesílání událostí). Informace o použití zásad opakování u jednotlivých funkcí najdete v doprovodných materiálech k zpracování chyb a opakování ve službě Azure Functions.
Referenční informace o host.json ve službě Azure Functions 2.x a novějších najdete v host.json referenčních informacích ke službě Azure Functions.