Sdílet prostřednictvím


Doručování zpráv a opakování s tématy oboru názvů

Doručování nabízených oznámení služby Event Grid zajišťuje trvalé doručování. Event Grid se pokusí doručit každou zprávu alespoň jednou pro každé odpovídající odběry okamžitě. Pokud koncový bod odběratele nepotvrdí přijetí události nebo pokud dojde k selhání, služba Event Grid opakuje doručení na základě pevného plánu opakování a zásad opakování. Event Grid ve výchozím nastavení doručí jednu událost najednou odběrateli.

Poznámka:

Event Grid nezaručuje objednávku pro doručování událostí, takže předplatitelé je můžou dostat mimo objednávku.

Předplatné události

Odběr události je prostředek konfigurace přidružený k jednomu tématu oboru názvů. Kromě jiného použijete odběr událostí k nastavení kritérií výběru události k definování kolekce událostí, která je k dispozici odběrateli z celkové sady událostí dostupných v tématu. Pomocí odběru událostí definujete také cílový koncový bod, do kterého se události odesílají. Odběr událostí navíc umožňuje nastavit další vlastnosti, jako je maximální počet opakování doručení a doba živého přenosu událostí, které definují chování modulu runtime doručení události.

Plán opakování

Když Event Grid obdrží chybu pro pokus o doručení události, Event Grid rozhodne, jestli se má opakovat doručení na základě typu chyby.

Pokud je chyba vrácená předplaceným koncovým bodem chyba související s konfigurací, která se nedá opravit opakovanými pokusy, služba Event Grid odešle událost do nakonfigurovaného cíle nedoručených zpráv. Pokud není nakonfigurované žádné nedoručené písmeno, událost se zahodí. Například událost je nedoručovaná nebo vyřazená, když koncový bod nakonfigurovaný v odběru událostí není dostupný, protože byl odstraněn. Opakování doručení se neprovádí u následujících podmínek a chyb:

Podmínky:

  • ArgumentException
  • TimeoutException
  • UnauthorizedAccessException
  • OperationCanceledException
  • SocketException |

Kódy chyb

  • 404 - NotFound
  • 401 - Unauthorized
  • 403 - Forbidden
  • 400 -BadRequest
  • 414 RequestUriTooLong

Poznámka:

Pokud pro koncový bod není nakonfigurované nedoručené písmeno, události se zahodí, když dojde k výše uvedeným chybám nebo podmínkám. Pokud nechcete, aby se tyto druhy událostí vynechaly, zvažte konfiguraci nedoručených dopisů v odběru událostí. Události nedoručených dopisů se zahodí, když se nenajde cíl nedoručených dopisů.

Pokud podmínka nebo chyba vrácená předplatnými koncovým bodem není mezi stavy ve výše uvedených seznamech, služba Event Grid opakuje pokusy na základě základního úsilí s využitím následujícího plánu opakování exponenciálního opakování:

  • 0 sekund (okamžité opakování)
  • 10 sekund
  • 30 sekund
  • 1 min.
  • 5 minut

Po 5 minutách bude Event Grid pokračovat v opakování každých 5 minut, dokud se událost nedoručí, nebo se dosáhne maximálního počtu opakování nebo doby živé události.

Zásady opakování

Zásady opakování můžete přizpůsobit pomocí následujících dvou vlastností konfigurace odběru událostí. Událost se zahodí (nenakonfiguruje se žádné nedoručené písmeno) nebo nedoručené písmeno, pokud některý z vlastností dosáhne svého nakonfigurovaného limitu.

  • Maximální počet doručení – hodnota musí být celé číslo od 1 do 10. Výchozí hodnota je 10. U nabízeného doručování definuje tato vlastnost maximální počet pokusů o doručení.
  • Uchovávání – Tato vlastnost se také označuje jako event time to live. Hodnota musí být hodnota doby trvání ISO 8601 s přesností minut. Počínaje časem publikování události tato vlastnost definuje časové období, po kterém zpráva vyprší. Minimální povolená hodnota je "PT1M" (1 minuta). Maximální povolená hodnota je 7 dnů nebo doba uchovávání podkladového tématu podle toho, která hodnota je nižší. Azure Portal poskytuje jednoduché uživatelské prostředí, ve kterém zadáte dny, hodiny a minuty jako celá čísla.

Poznámka:

Pokud nastavíte obojí Retention i Maximum delivery count, Event Grid je použije k určení, kdy zastavit doručování událostí. Buď jedna zastaví doručení události. Pokud například nastavíte dobu uchování 20 minut a 10 maximálních pokusů o doručení, znamená to, že když se událost nedoručí po 20 minutách nebo se nedoručí po 10 pokusech, podle toho, co nastane dříve, událost je nedoručovaná. Vzhledem k plánu opakování ale nastavení maximálního počtu pokusů o doručení na 10 nemá žádný vliv, protože události budou nejprve po 20 minutách nedoručené. Důvodem je fakt v minutě 20, pokus o doručení č. 8 (0, 10s, 30s, 1m, 5m, 10m, 15m, 20m), ale v té době je událost nedoručovaná.

Dávkování výstupu

Když jako typ cílového koncového bodu použijete webhooky , služba Event Grid ve výchozím nastavení odesílá každou událost jednotlivě odběratelům. Ve scénářích s vysokou propustností můžete službu Event Grid nakonfigurovat na dávkové události pro doručování, abyste zlepšili výkon HTTP. Dávkování je ve výchozím nastavení vypnuté a je možné ho zapnout pro každé odběry událostí.

Při použití služby Event Hubs jako typu cílového koncového bodu služba Event Grid vždy dávková události pro maximální efektivitu a výkon. Neexistuje žádná konfigurace dávkových zásad, protože služba Event Grid ve výchozím nastavení zpracovává chování dávkování při doručování do služby Azure Event Hubs.

Zásady dávkování

Dávkové doručování má dvě nastavení:

  • Maximální počet událostí na dávku – Maximální počet událostí, které Event Grid doručuje na dávku. Hodnota musí být celé číslo od 1 do 5 000. Toto číslo se nikdy nepřekročilo. Méně událostí však může být doručeno, pokud nejsou v době doručení k dispozici žádné další události. Event Grid nezpozdí události, aby vytvořily dávku, pokud je k dispozici méně událostí.
  • Upřednostňovaná velikost dávky v kilobajtech – cílový strop pro velikost dávky v kilobajtech. Hodnota musí být číslo od 1 do 1024. Podobně jako maximální počet událostí může být velikost dávky menší, pokud v době doručení není k dispozici dostatek událostí. Je možné, že dávka je větší než upřednostňovaná velikost dávky, pokud je jedna událost větší než upřednostňovaná velikost. Pokud je například upřednostňovaná velikost 4 kB a událost 10 kB se odešle do Event Gridu, místo vyřazení se doručí událost 10 kB.

Dávkové doručování se konfiguruje na základě odběru událostí prostřednictvím portálu, rozhraní příkazového řádku, PowerShellu nebo sad SDK.

Chování dávkování

  • Vše nebo žádný

    Event Grid pracuje s sémantikou typu all-or-none. Nepodporuje částečný úspěch doručení dávky. Předplatitelé by měli být opatrní, aby požádali pouze o tolik událostí na dávku, kolik jich dokáže přiměřeně zpracovat za 30 sekund.

  • Optimistické dávkování

    Nastavení zásad dávkování nejsou striktní omezení chování dávkování a jsou respektována na základě maximálního úsilí. Při nízkých mírách událostí často vidíte, že velikost dávky je menší než požadovaná maximální počet událostí na dávku.

  • Výchozí hodnota je nastavená na VYPNUTO.

    Event Grid ve výchozím nastavení přidává do každé žádosti o doručení jenom jednu událost. Způsob, jak zapnout dávkování, je nastavit jedno z nastavení uvedených v zásadách dávkování.

  • Výchozí hodnoty

    Při vytváření odběru událostí není nutné zadávat obě nastavení (maximální počet událostí na dávku i přibližnou velikost dávky v kilo bajtech). Pokud je nastaveno pouze jedno nastavení, Event Grid používá výchozí hodnoty. Informace o výchozích hodnotách a jejich přepsání najdete v následujících částech.

portál Azure

Tato nastavení se zobrazí na kartě Další funkce na stránce Odběr událostí nebo po vytvoření odběru událostí v nabídce Konfigurace při přístupu k odběru událostí.

Snímek obrazovky s kartou Další funkce na stránce Odběr událostí se zvýrazněnou částí Dávkování

Události nedoručených dopisů

Pokud Event Grid nemůže událost doručit během určitého časového období nebo po pokusu o doručení události určitou dobu, odešle událost do účtu úložiště. Tento proces se označuje jako nedoručených dopisů. Když je splněna jedna z následujících podmínek, eventua event gridu je nedosaděná písmena.

  • Událost se nedoručí během doby trvání (uchovávání definované v odběru událostí).
  • Počet pokusů o doručení události překročil limit.

Pokud je splněna, událost se zahodí nebo nedoručí. Ve výchozím nastavení služba Event Grid nezapne nedoručitelnost. Pokud ho chcete povolit, musíte při vytváření odběru událostí zadat účet úložiště, ve kterém se budou uchovávat nezřetězené události. Přečtete události z tohoto účtu úložiště a vyřešíte tak dodávky.

Event Grid odešle událost do umístění nedoručených dopisů, když se pokusila všechny pokusy o opakování. Pokud Event Grid obdrží kód odpovědi 400 (Chybný požadavek) nebo 413 (příliš velká entita požadavku), okamžitě naplánuje událost pro nedoručitelnost. Tyto kódy odpovědí označují doručení události nikdy neuspěje.

Vypršení časového limitu je zaškrtnuto pouze při příštím plánovaném pokusu o doručení. Takže i v případě, že vyprší platnost času naživo před dalším plánovaným pokusem o doručení, je vypršení platnosti události kontrolováno pouze v době dalšího doručení a následně nedoručené dopisy.

Mezi posledním pokusem o doručení události a doručením do umístění nedoručených dopisů trvá pět minut. Toto zpoždění je určené ke snížení počtu operací úložiště objektů blob. Pokud je nedostupné místo nedoručených dopisů po dobu čtyř hodin, událost se zahodí.

Před nastavením umístění nedoručených dopisů musíte mít účet úložiště s kontejnerem. Při vytváření odběru událostí zadáte koncový bod pro tento kontejner. Koncový bod je ve formátu: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>/blobServices/default/containers/<container-name>

Možná budete chtít být upozorněni, když byla událost odeslána do umístění nedoručených dopisů. Pokud chcete službu Event Grid použít k reagování na nedoručené události, vytvořte odběr událostí pro úložiště objektů blob s nedoručenými písmeny. Pokaždé, když úložiště objektů blob nedoručených dopisů obdrží nedoručenou událost, Event Grid upozorní vaši obslužnou rutinu. Obslužná rutina reaguje akcemi, které chcete provést pro obnovení nevyřešených událostí.

Při konfiguraci nedoručených dopisů je potřeba přidat spravovanou identitu do příslušné role řízení přístupu na základě role (RBAC) v účtu azure Storage, který bude obsahovat nedoručené události. Další informace najdete v tématu Podporované cíle a role Azure.

Formáty událostí doručení

Tato část obsahuje příklady událostí a nedoručených událostí pomocí schématu CloudEvents 1.0, což je formát metadat zpráv podporovaný v tématech oboru názvů.

Schéma CloudEvents 1.0

Událost

{
    "id": "caee971c-3ca0-4254-8f99-1395b394588e",
    "source": "mysource",
    "dataversion": "1.0",
    "subject": "mySubject",
    "type": "fooEventType",
    "datacontenttype": "application/json",
    "data": {
        "prop1": "value1",
        "prop2": 5
    }
}

Událost nedoručených dopisů

[
  {
    "deadLetterProperties": {
      "deadletterreason": "Maximum delivery attempts was exceeded.",
      "deliveryattempts": 1,
      "deliveryresult": "Event was not acknowledged nor rejected.",
      "publishutc": "2023-11-01T20:33:51.4521467Z",
      "deliveryattemptutc": "2023-11-01T20:33:52.3692079Z"
    },
    "event": {
      "comexampleextension1": "value1",
      "id": "A234-1234-1234",
      "comexampleothervalue": "5",
      "datacontenttype": "text/xml",
      "specversion": "1.0",
      "time": "2018-04-05T17:31:00Z",
      "source": "/mycontext",
      "type": "com.example.someevent",
      "data": <your-event-data>
    }
  }
]

LastDeliveryOutcome: Probation

Odběr událostí se po určitou dobu založí do služby Event Grid, pokud se doručení událostí do cílového cíle nepodaří. Doba probace se liší pro různé chyby vrácené cílovým koncovým bodem. Pokud je odběr události ve zkušební verzi, můžou se události dostat nedoručené nebo vyřazené, aniž by se dokonce pokoušely doručit v závislosti na kódu chyby, kvůli kterému je v probaci.

Chyba Doba trvání zkušební doby trvání
Zaneprázdněný 10 sekund
NotFound 5 minut
SocketError 30 sekund
Chyba řešení 5 minut
Zakázáno 5 minut
Úplný 5 minut
TimedOut 10 sekund
Neautorizováno 5 minut
Zakázáno 5 minut
InvalidAzureFunctionDestination 10 minut

Poznámka:

Event Grid používá dobu trvání probation pro lepší správu doručení a doba trvání se může v budoucnu změnit.

Stav doručení zprávy

Event Grid používá kódy odpovědí HTTP k potvrzení přijetí událostí.

Kódy úspěchu

Event Grid považuje za úspěšné dodávky pouze následující kódy odpovědí HTTP. Všechny ostatní stavové kódy se považují za neúspěšné dodávky a podle potřeby se budou opakovat nebo nedoručené. Když Event Grid obdrží úspěšný stavový kód, považuje doručení za dokončené.

  • 200 OK
  • 201 Vytvořeno
  • 202 Přijato
  • 203 Neautoritativní informace
  • 204 Chybí obsah

Kódy selhání

Všechny ostatní kódy, které nejsou ve výše uvedené sadě (200–204), se považují za selhání a v případě potřeby se budou opakovat. Některé mají určité zásady opakování svázané s nimi uvedené níže, všechny ostatní se řídí standardním plánem opakování. Je důležité mít na paměti, že vzhledem k vysoce paralelizované povaze architektury služby Event Grid je chování opakování ne deterministické.

Stavový kód Chování opakování
400 – Chybný požadavek Nezopakováno
401 – Neautorizováno Zkuste to znovu po 5 minutách nebo déle pro koncové body prostředků Azure.
403 – Zakázáno Nezopakováno
404 – Nenalezeno Zkuste to znovu po 5 minutách nebo déle pro koncové body prostředků Azure.
408 – Časový limit žádosti Zkuste to znovu za 2 minuty nebo déle.
413 – Entita požadavku je příliš velká Nezopakováno
503 – Nedostupná služba Zkuste to znovu po 30 sekundách nebo déle.
Všichni ostatní Zkuste to znovu po 10 sekundách nebo déle.

Vlastní vlastnosti doručení

Odběry událostí umožňují nastavit hlavičky HTTP, které jsou součástí doručených událostí. Tato funkce umožňuje nastavit vlastní hlavičky, které jsou požadovány cílem. Při vytváření odběru událostí můžete nastavit až 10 hlaviček. Každá hodnota záhlaví by neměla být větší než 4 096 bajtů (4K). U událostí, které se doručují do následujících cílů, můžete nastavit vlastní hlavičky:

  • Webhooky
  • Azure Event Hubs

Další kroky