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.

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 Bodytypu 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.

V případě jiných výstupních scénářů můžete přímo vytvářet a používat typy z Microsoft.Azure.EventHubs .

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ý magin 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, pokud se použije vlastní adresa 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četinstancích
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.0Microsoft.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.

Další kroky