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.
Tato sada článků vysvětluje, jak pracovat s vazbami Azure Functions pro IoT Hub. Podpora služby IoT Hub je založená na vazbě Azure Event Hubs.
Důležité
Následující ukázky kódu používají rozhraní API centra událostí, ale daná syntaxe se vztahuje na funkce ioT Hubu.
| Akce | Typ |
|---|---|
| Reakce na události odeslané do datového proudu událostí centra IoT Hub. | Spouštěč |
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 6.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. Podpora vazby k typům 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[] kde T je jeden z typů jednotlivých událostí |
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.
Typy vazeb sady SDK
Typy sad SDK pro Azure EventHub jsou ve verzi Preview. Postupujte podle vazeb sady Python SDK pro ukázku EventHubu a začněte s typy sad SDK pro službu Event Hubs v Pythonu.
Důležité
Použití vazeb typu sady SDK vyžaduje programovací model Pythonu v2.
| Závazný | Typy parametrů | Vzorky |
|---|---|---|
| Trigger EventHubu | EventData | EventData |
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í. POZNÁMKA: Nastavení této hodnoty nad 1 pro hostingové plány podporované skalováním založeným na cíli může způsobit nesprávné škálování. Platforma vypočítává velikost nezpracované fronty jako "aktuální pozice – pozice kontrolního bodu", což může nesprávně indikovat nezpracované zprávy, když byly zpracovány dávky, ale ještě nejsou kontrolovány kontrolními body, což znemožňuje správné škálování v případě, že žádné zprávy nezůstávají. |
| počet přednačtení | 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.0Microsoft.Azure.WebJobs.Extensions.EventHubs balíčku nebo novější verzi.
2 Výchozí změna v balíčku verze maxEventBatchSize.Microsoft.Azure.WebJobs.Extensions.EventHubs 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.