Megosztás a következőn keresztül:


Üzenetküldés kézbesítése és újrapróbálkozás névtértémakörökkel

Az Event Grid-névterek leküldéses kézbesítése tartós kézbesítést biztosít. Az Event Grid minden egyező előfizetéshez legalább egyszer megpróbálja elküldeni az egyes üzeneteket. Ha az előfizető végpontja nem nyugtázza az esemény fogadását, vagy ha hiba történik, az Event Grid egy rögzített újrapróbálkozési ütemezés és újrapróbálkozás-szabályzat alapján újrapróbálkozik. Az Event Grid alapértelmezés szerint egyszerre egy eseményt biztosít az előfizetőnek.

Feljegyzés

Az Event Grid nem garantálja az eseménykézbesítés megrendelését, így az előfizetők rendelésen kívül is megkaphatják őket.

Esemény-előfizetés

Az esemény-előfizetés egy egyetlen névtértémakörhöz társított konfigurációs erőforrás. Többek között egy esemény-előfizetés használatával állíthatja be az eseményválasztási feltételeket az előfizető számára elérhető eseménygyűjtemény meghatározásához a témakörben elérhető teljes eseménykészletből. Egy esemény-előfizetés használatával azt a célvégpontot is meghatározhatja, amelyre az eseményeket elküldik. Emellett az esemény-előfizetés lehetővé teszi egyéb tulajdonságok, például a kézbesítési újrapróbálkozások maximális számának és az események élettartamának beállítását, amelyek meghatározzák az eseménykézbesítés futásidejét.

Újrapróbálkozás ütemezése

Amikor az Event Grid hibaüzenetet kap egy eseménykézbesítési kísérlethez, az Event Grid eldönti, hogy a hiba típusa alapján újra meg kell-e próbálnia a kézbesítést.

Ha az előfizetett végpont által visszaadott hiba konfigurációval kapcsolatos hiba, amelyet újrapróbálkozással nem lehet kijavítani, az Event Grid elküldi az eseményt egy konfigurált kézbesítetlen levél céljának. Ha nincs beállítva holtbetű, a rendszer elveti az eseményt. Egy esemény például halott betűs vagy elvetett, ha az esemény-előfizetésben konfigurált végpont nem érhető el, mert törölték. A kézbesítés újrapróbálkozása nem történik meg a következő feltételek és hibák esetén:

Feltételek:

  • ArgumentException
  • TimeoutException
  • UnauthorizedAccessException
  • OperationCanceledException
  • SocketException |

Hibakódok

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

Feljegyzés

Ha a kézbesíthetetlen levelek nincsenek végponthoz konfigurálva, a rendszer elveti az eseményeket a fenti hibák vagy feltételek bekövetkezésekor. Fontolja meg a kézbesíthetetlen levelek beállítását az esemény-előfizetésben, ha nem szeretné, hogy az ilyen típusú események el legyenek dobva. A holt betűs eseményeket a rendszer elveti, ha a holtbetűs célhely nem található.

Ha az előfizetett végpont által visszaadott feltétel vagy hiba nem szerepel a fenti listákban, az Event Grid az alábbi exponenciális visszalépési újrapróbálkozási ütemezéssel újrapróbálkozhat alapműveleti alapon:

  • 0 másodperc (azonnali újrapróbálkozás)
  • 10 másodperc
  • 30 másodperc
  • 1 perc
  • 5 perc

5 perc elteltével az Event Grid 5 percenként újrapróbálkozza az esemény kézbesítéséig vagy az újrapróbálkozáshoz szükséges maximális élettartamot vagy eseményidőt.

Újrapróbálkozási szabályzat

Az újrapróbálkozási szabályzatot az alábbi két esemény-előfizetés konfigurációs tulajdonságával szabhatja testre. Ha valamelyik tulajdonság eléri a beállított korlátot, az esemény el lesz dobva (nincs beállítva holtbetű) vagy holt betű.

  • Maximális kézbesítési szám – Az értéknek 1 és 10 közötti egész számnak kell lennie. Az alapértelmezett érték 10. Leküldéses kézbesítés esetén ez a tulajdonság határozza meg a maximális kézbesítési kísérleteket.
  • Megőrzés – Ez a tulajdonság más néven event time to live. Az értéknek perc pontosságú ISO 8601 időtartamértéknek kell lennie. Az esemény közzétételétől kezdve ez a tulajdonság határozza meg azt az időtartamot, amely után az üzenet lejár. A megengedett minimális érték a "PT1M" (1 perc). A megengedett maximális érték 7 nap, vagy az alapul szolgáló témakör megőrzési ideje, attól függően, hogy melyik alacsonyabb. Az Azure Portal egyszerű felhasználói élményt nyújt, ahol egész számként megadhatja a napokat, az órákat és a perceket.

Feljegyzés

Ha mindkettőt Retention beállítja, az Maximum delivery countEvent Grid ezeket használja annak meghatározására, hogy mikor állítsa le az eseménykézbesítést. Bármelyik fél leállítja az eseménykézbesítést. Ha például 20 percet állít be megőrzési és 10 maximális kézbesítési kísérletként, az azt jelenti, hogy ha egy eseményt 20 perc után nem kézbesítenek, vagy 10 kísérlet után nem kézbesítik, attól függően, hogy melyik történik először, az esemény holt betűs lesz. Az újrapróbálkozási ütemezés miatt azonban a kézbesítési kísérletek maximális számának 10-re történő beállítása nincs hatással, mivel az események 20 perc után először holtbetűsek lesznek. Ez annak a ténynek köszönhető, hogy a 20. percben a 8. kézbesítési kísérlet (0, 10s, 30s, 1m, 5m, 10m, 15m, 20m) történik, de abban az időben az esemény halott betűs.

Kimenet kötegelése

Amikor webhookokat használ célvégponttípusként, az Event Grid alapértelmezés szerint egyenként küldi el az egyes eseményeket az előfizetőknek. Az Event Grid konfigurálható úgy, hogy az eseményeket kötegelje a nagyobb HTTP-teljesítmény érdekében a nagy átviteli sebességű forgatókönyvekben. A kötegelés alapértelmezés szerint ki van kapcsolva, és esemény-előfizetésenként bekapcsolható.

Ha az Event Hubsot célvégponttípusként használja, az Event Grid mindig kötegeli az eseményeket a maximális hatékonyság és teljesítmény érdekében. Nincs elérhető kötegházirend-konfiguráció, mivel alapértelmezés szerint az Event Grid kezeli a kötegelési viselkedést az Azure Event Hubsba való kézbesítéskor.

Kötegelési szabályzat

A kötegelt kézbesítés két beállítással rendelkezik:

  • Események maximális száma kötegenként – Az Event Grid által szállított események maximális száma kötegenként. Az értéknek 1 és 5000 közötti egész számnak kell lennie. Ez a szám soha nem lépi túl. Ha azonban a kézbesítéskor nem áll rendelkezésre több esemény, kevesebb eseményt lehet kézbesíteni. Az Event Grid nem késlelteti az eseményeket egy köteg létrehozásához, ha kevesebb esemény érhető el.
  • Előnyben részesített kötegméret kilobájtban – A kötegméret célplafonja kilobájtban. Az értéknek 1 és 1024 közötti számnak kell lennie. A maximális eseményekhez hasonlóan a köteg mérete is kisebb lehet, ha a kézbesítéskor nem áll rendelkezésre elegendő esemény. Előfordulhat, hogy egy köteg nagyobb az előnyben részesített kötegméretnél , ha egyetlen esemény nagyobb az előnyben részesített méretnél. Ha például az előnyben részesített méret 4Kb, és a rendszer egy 10Kb-os eseményt küld az Event Gridbe, a rendszer a 10Kb-os eseményt kézbesíti ahelyett, hogy elveti őket.

A kötegelt kézbesítés esemény-előfizetésenként van konfigurálva a portálon, a parancssori felületen, a PowerShellen vagy az SDK-n keresztül.

Kötegelési viselkedés

  • Az összes vagy egyik sem

    Az Event Grid teljesen vagy egyáltalán nem szemantikával működik. Nem támogatja a kötegelt kézbesítés részleges sikerességét. Az előfizetőknek óvatosnak kell lenniük, hogy csak annyi eseményt kérjenek kötegenként, amennyit 30 másodperc alatt ésszerűen kezelhetnek.

  • Optimista kötegelés

    A kötegelési szabályzat beállításai nem szigorúak a kötegelési viselkedéshez, és a legjobb munkamennyiség alapján vannak tiszteletben tartva. Alacsony eseményarány esetén gyakran tapasztalja, hogy a köteg mérete kisebb, mint a kötegenként kért maximális események száma.

  • Az alapértelmezett érték kikapcsolva

    Alapértelmezés szerint az Event Grid csak egy eseményt ad hozzá minden kézbesítési kérelemhez. A kötegelés bekapcsolásának módja a Kötegelési szabályzatban említett beállítások egyikének beállítása.

  • Alapértelmezett értékek

    Esemény-előfizetés létrehozásakor nem szükséges mindkét beállítást megadni (kötegenkénti maximális események és hozzávetőleges kötegméret kilobájtban). Ha csak egy beállítás van beállítva, az Event Grid az alapértelmezett értékeket használja. Az alapértelmezett értékekről és azok felülbírálásáról az alábbi szakaszokban olvashat.

Azure Portal

Ezeket a beállításokat az Esemény-előfizetés lap További szolgáltatások lapján vagy az esemény-előfizetés létrehozása után, az Esemény-előfizetés elérésekor a Konfiguráció menüben láthatja.

Képernyőkép az Esemény-előfizetés lap További funkciók lapjáról, kiemelve a Kötegelés szakaszt.

Holt betűs események

Ha az Event Grid egy adott időszakon belül nem tud eseményt kézbesíteni, vagy ha bizonyos számú alkalommal próbálja kézbesíteni az eseményt, az eseményt egy tárfiókba küldi. Ezt a folyamatot holtbetűsnek nevezzük. Az Event Grid az alábbi feltételek valamelyikének teljesülése esetén holtpontot ad egy eseménynek.

  • Az esemény nem az élettartam (az esemény-előfizetésben meghatározott megőrzés) időszakán belül lesz kézbesítve.
  • Az esemény kézbesítésére tett próbálkozások száma túllépte a korlátot.

Ha bármelyik teljesül, az esemény el lesz ejtve vagy elhalt betűvel. Alapértelmezés szerint az Event Grid nem kapcsolja be a levéltovábbítást. Az engedélyezéshez meg kell adnia egy tárfiókot a nem kézbesített események tárolásához az esemény-előfizetés létrehozásakor. Ebből a tárfiókból olvassa el az eseményeket a szállítások feloldásához.

Az Event Grid egy eseményt küld a kézbesítetlen levél helyére, amikor az újrapróbálkozási kísérleteit megpróbálta. Ha az Event Grid egy 400 -os (hibás kérés) vagy 413-ás (Túl nagy kérelem entitás) válaszkódot kap, az azonnal beütemezi az eseményt a kézbesíthetetlen levelekhez. Ezek a válaszkódok azt jelzik, hogy az esemény kézbesítése soha nem fog sikerülni.

Az élettartam lejárata csak a következő ütemezett kézbesítési kísérletnél van bejelölve. Így még akkor is, ha az élettartam a következő ütemezett kézbesítési kísérlet előtt lejár, az esemény lejáratát csak a következő kézbesítéskor ellenőrzi a rendszer, majd az elhalt betűt.

Öt perces késés van az esemény utolsó kézbesítési kísérlete és a kézbesített levél helyére történő kézbesítése között. Ez a késés a Blob Storage-műveletek számának csökkentésére szolgál. Ha a kézbesíthetetlen levelek helye négy órán keresztül nem érhető el, a rendszer elveti az eseményt.

A kézbesíthetetlen levelek helyének megadása előtt rendelkeznie kell egy tárolóval rendelkező tárfiókkal. Az esemény-előfizetés létrehozásakor meg kell adnia a tároló végpontját. A végpont formátuma a következő: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>/blobServices/default/containers/<container-name>

Előfordulhat, hogy értesítést szeretne kapni, ha egy eseményt a kézbesíthetetlen levelek helyére küldtek. Ha az Event Grid használatával nem kézbesített eseményekre szeretne válaszolni, hozzon létre egy esemény-előfizetést a kézbesítetlen blobtárolóhoz. Minden alkalommal, amikor a kézbesítetlen blobtároló kézbesítetlen eseményt kap, az Event Grid értesíti a kezelőt. A kezelő olyan műveletekkel válaszol, amelyeket meg szeretne tenni a nem kézbesített események egyeztetéséhez.

A kézbesítetlen levelek konfigurálásakor hozzá kell adnia a felügyelt identitást a megfelelő szerepköralapú hozzáférés-vezérlési (RBAC) szerepkörhöz azon az Azure Storage-fiókon, amely a kézbesítetlen levelek eseményeit fogja tárolni. További információ: Támogatott célhelyek és Azure-szerepkörök.

Kézbesítési eseményformátumok

Ez a szakasz a CloudEvents 1.0 sémával, a névtértémakörökben támogatott üzenet metaadat-formátumával példákat tartalmaz az eseményekre és a halottbetűs eseményekre.

CloudEvents 1.0 séma

Esemény

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

Holt betűs esemény

[
  {
    "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: Próbaidő

Az Event Grid egy ideig próbaidőre próbaidőre tesz ki egy esemény-előfizetést, ha az esemény kézbesítése a célhelyre meghiúsul. A próbaidő eltérő a célvégpont által visszaadott különböző hibák esetén. Ha egy esemény-előfizetés próbaidő alatt van, előfordulhat, hogy az események kézbesítetlenek vagy elvethetők anélkül, hogy megpróbálná a kézbesítést attól a hibakódtól függően, amely miatt próbaidő alatt van.

Hiba Próbaidő időtartama
Foglalt 10 másodperc
NotFound 5 perc
SocketError 30 másodperc
ResolutionError 5 perc
Disabled (Letiltva) 5 perc
Teljes 5 perc
Időtúllépés 10 másodperc
Nem engedélyezett 5 perc
Forbidden 5 perc
InvalidAzureFunctionDestination 10 perc

Feljegyzés

Az Event Grid a próbaidőt használja a jobb kézbesítéskezelés érdekében, és az időtartam a jövőben változhat.

Üzenetkézbesítés állapota

Az Event Grid HTTP-válaszkódokkal nyugtázza az események fogadását.

Sikerkódok

Az Event Grid csak a következő HTTP-válaszkódokat tekinti sikeres kézbesítésnek. Minden más állapotkód sikertelen kézbesítésnek minősül, és szükség szerint újrapróbálkozott vagy kézbesítetlen lesz. Ha az Event Grid sikeres állapotkódot kap, a kézbesítést befejezettnek tekinti.

  • 200 OK
  • 201 Létrehozva
  • 202 Elfogadva
  • 203 Nem mérvadó információk
  • 204 Nincs tartalom

Hibakódok

A fenti készletben (200-204) nem szereplő összes többi kód hibának minősül, és szükség esetén újra próbálkozik. Néhány konkrét újrapróbálkozési szabályzatot az alábbiakban ismertet, míg mások a szokásos újrapróbálkozás ütemezését követik. Fontos szem előtt tartani, hogy az Event Grid architektúrájának nagymértékben párhuzamos jellege miatt az újrapróbálkozási viselkedés nem determinisztikus.

Állapotkód Újrapróbálkozás viselkedése
400 Hibás kérés Nincs újrapróbálkozott
401 Nem engedélyezett Újrapróbálkozás 5 perc vagy több után az Azure Resources-végpontok esetében
403 – Tiltott Nincs újrapróbálkozott
404 Nem található Újrapróbálkozás 5 perc vagy több után az Azure Resources-végpontok esetében
408 Kérés időtúllépése Újrapróbálkozás 2 perc vagy több után
413 Kérelem entitás túl nagy Nincs újrapróbálkozott
503 A szolgáltatás nem érhető el Újrapróbálkozás 30 másodperc vagy több után
Minden más Újrapróbálkozás 10 másodperc vagy több után

Egyéni kézbesítési tulajdonságok

Az esemény-előfizetések lehetővé teszik a kézbesített eseményekben szereplő HTTP-fejlécek beállítását. Ez a funkció lehetővé teszi a célhoz szükséges egyéni fejlécek beállítását. Esemény-előfizetés létrehozásakor legfeljebb 10 fejlécet állíthat be. Az egyes fejlécértékek nem lehetnek nagyobbak 4096 (4K) bájtnál. Az egyéni fejléceket a következő célhelyekre kézbesített eseményeken állíthatja be:

  • Webhookok
  • Azure-eseményközpontok

Következő lépések