Lekéréses kézbesítés HTTP-vel
Ez a cikk a Mi az Azure Event Grid? című cikkre és az Event Grid alapfogalmaira épül, hogy alapvető információkat nyújtson, mielőtt elkezdené használni az Event Grid lekéréses kézbesítését HTTP-n keresztül. A támogatott alapvető fogalmakat, erőforrásmodelleket és üzenetkézbesítési módokat ismerteti. A dokumentum végén olyan cikkekre mutató hasznos hivatkozásokat talál, amelyek bemutatja az Event Grid használatát, valamint azokat a cikkeket, amelyek részletes fogalmi információkat tartalmaznak.
Feljegyzés
Ez a dokumentum segítséget nyújt a HTTP protokollt használó Event Grid-képességek használatának megkezdésében. Ez a cikk azoknak a felhasználóknak szól, akiknek alkalmazásokat kell integrálniuk a felhőbe. Ha IoT-eszközadatok közlésére van szüksége, tekintse meg az Azure Event Grid MQTT Broker funkciójának áttekintését.
CloudEvents
Az Event Grid névtértémakörök olyan eseményeket fogadnak el, amelyek megfelelnek a Cloud Native Computing Foundation (CNCF) nyílt standard CloudEvents 1.0 specifikációjának jSON formátumú HTTP protokollkötéssel.
További információt a CloudEvents támogatási szolgálatában talál.
CloudEvents-kolostorok sátormód
A CloudEvents specifikációja három con sátormód definiál, amelyet használhat: bináris, strukturált és kötegelt.
Fontos
Bármilyen con sátormód szöveget (JSON, text/*stb.) vagy bináris kódolású eseményadatokat cserélhet. A bináris con sátormód nem kizárólag bináris adatok küldéséhez használható.
A con sátormód nem a használt kódolásról, bináris vagy szövegről szólnak, hanem az eseményadatok és a metaadatok leírásáról és cseréjéről. A strukturált con sátormód egyetlen struktúrát használ, például egy JSON-objektumot, ahol a környezeti attribútumok és az eseményadatok együtt szerepelnek a HTTP hasznos adataiban. A bináris con sátormód elválasztja a HTTP-fejlécekhez leképezett környezeti attribútumokat és az eseményadatokat, amelyek a HTTP hasznos adatai a médiatípus értéke alapján vannak kódolva a fájlbanContent-Type
.
További információ: CloudEvents con sátormód s.
Üzenetek és események
A CloudEvent általában olyan eseményadatokat hordoz, amelyek egy rendszerbeli eseményt, vagyis rendszerállapot-változást jelentik be. A CloudEvents használatakor azonban bármilyen típusú adatot továbbíthat. Előfordulhat például, hogy a CloudEvents exchange formátumával szeretne parancsüzenetet küldeni, amely egy műveletet kér egy alsóbb rétegbeli alkalmazáshoz. Egy másik példa az, amikor az Event Grid MQTT-közvetítőjének üzeneteit egy témakörbe irányítja. Ebben a forgatókönyvben egy CloudEvents-borítékba csomagolt MQTT-üzenetet irányít.
Lekéréses kézbesítés
A lekéréses kézbesítéssel az alkalmazás csatlakozik az Event Gridhez a CloudEvents üzenetsorszerű szemantikával való olvasásához.
A lekéréses kézbesítés az alábbi eseményfogyasztási előnyöket kínálja:
Az eseményeket saját tempójában, nagy léptékben vagy az alkalmazás által támogatott bemeneti sebességgel használhatja fel.
Eseményeket saját maga által választott időpontban használjon fel. Az üzleti követelményeknek megfelelően például az üzenetek feldolgozása éjszaka történik.
Privát kapcsolaton keresztül használjon eseményeket, hogy az adatok privát IP-területet használjanak.
Feljegyzés
- A névterek egyszerűbb erőforrásmodellt biztosítanak, amely egyetlen témakörtípust tartalmaz. Az Event Grid jelenleg támogatja a saját alkalmazásesemények névtértémákon keresztüli közzétételét. Névtértémák használatával nem használhatja fel az Azure-szolgáltatásokból vagy partner SaaS-rendszerekből származó eseményeket. Rendszertémakörök, tartománytémakörök és partnertémakörök sem hozhatók létre névtérben.
- A névtértémakörök támogatják a CloudEvents JSON formátumát.
Üzenetsor-esemény-előfizetések
Események fogadásakor vagy eseményállapot-kezelő műveletek használatakor az alkalmazás megadja a névtér HTTP-végpontját, a témakör nevét és egy üzenetsor-esemény-előfizetés nevét. Az üzenetsor-esemény-előfizetés kézbesítésiMode beállítása "queue" (üzenetsor) értékre van állítva. A várólistás esemény-előfizetések a lekéréses kézbesítési API használatával használják az eseményeket. További információ az erőforrások létrehozásáról: névterek, témakörök és esemény-előfizetések létrehozása.
Egy esemény-előfizetés használatával határozza meg az események szűrési feltételeit, és ennek során hatékonyan határozza meg az esemény-előfizetésen keresztül felhasználható események készletét. Egy vagy több előfizetői (fogyasztói) alkalmazás ugyanahhoz a névtérvégponthoz csatlakozhat, és ugyanazt a témakör- és esemény-előfizetést használhatja.
Lekéréses kézbesítési műveletek
Az alkalmazás a következő műveleteket használja a lekéréses kézbesítés használatakor.
- A fogadási művelet egy vagy több esemény beolvasására szolgál az Event Gridnek küldött egyetlen kérés használatával. Alapértelmezés szerint a közvetítő legfeljebb 60 másodpercet vár, amíg az események elérhetővé válnak. Az események például az első közzétételükkor lesznek elérhetők a kézbesítéshez. A sikeres fogadási kérelem nulla vagy több eseményt ad vissza. Ha az események elérhetők, a lehető legtöbb elérhető eseményt adja vissza a kért eseményszámig. Az Event Grid minden beolvasott eseményhez egy zárolási jogkivonatot is ad vissza.
- A zárolási jogkivonat egyfajta leíró, amely azonosít egy eseményt, amellyel szabályozhatja az állapotát.
- Miután egy fogyasztói alkalmazás megkapja az eseményt, és feldolgozza azt, tudomásul veszi ezt az eseményt. Ez a művelet arra utasítja az Event Gridet, hogy törölje az eseményt, hogy ne legyen egy másik ügyfélnek újra kézbesítve. A fogyasztói alkalmazás egy vagy több jogkivonatot egyetlen kéréssel nyugtáz, és megadja a zárolási jogkivonatokat a lejárat előtt.
Más esetekben előfordulhat, hogy a fogyasztói alkalmazás szeretne eseményeket kiadni vagy elutasítani.
A fogyasztói alkalmazás kiad egy fogadott eseményt, amely jelzi az Event Gridnek, hogy nem áll készen az esemény feldolgozására, és hogy elérhetővé tegye az újraeladáshoz. Ezt úgy teszi, hogy meghívja a kiadási műveletet az Event Gridnek visszaadandó eseményeket azonosító zárolási jogkivonatokkal. Az alkalmazás szabályozhatja, hogy az eseményt azonnal fel kell-e szabadítani, vagy ha késleltetést kell alkalmazni, mielőtt az esemény újraelérhetővé válik.
Dönthet úgy, hogy elutasít egy eseményt, ha van egy olyan feltétel ( esetleg állandó ), amely megakadályozza, hogy a fogyasztói alkalmazás feldolgozhassa az eseményt. A hibásan formázott üzenetek például elutasíthatók, mert nem elemezhetők sikeresen. Az elutasított események holtbetűsek, ha elérhető a holtbetűs célhely. Ellenkező esetben el lesznek dobva.
Hatókör, amelyen a lekéréses kézbesítési műveletek futnak
Fogadási, nyugtázási, kiadási, elutasítási vagy megújítási művelet meghívásakor ezek a műveletek az esemény-előfizetés kontextusában lesznek végrehajtva. Ha például egy eseményt nyugtáz, az esemény már nem érhető el az nyugtázási művelet hívásához használt esemény-előfizetésen keresztül. Más esemény-előfizetések továbbra is "ugyanazzal" az eseménysel rendelkezhetnek. Ennek az az oka, hogy egy esemény-előfizetés megkapja a közzétett események másolatát. Ezek az eseménypéldányok gyakorlatilag különböznek egymástól az esemény-előfizetések között. Minden eseménynek saját állapota van, független a többi eseményétől.
Adatalakzat események fogadása lekéréses kézbesítéssel
Amikor lekéréses kézbesítéssel kézbesít eseményeket, az Event Grid egy objektumtömböt tartalmaz, amely magában foglalja az eseményt és a brokerProperties objektumokat. Az eseménytulajdonság értéke a strukturált con sátormód-ben kézbesített CloudEvent. A brokerProperties objektum tartalmazza a kézbesített CloudEventhez társított zárolási jogkivonatot. A következő json-objektum egy fogadási művelet mintaválasza, amely két eseményt ad vissza:
{
"value": [
{
"brokerProperties": {
"lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDXYS23Z+5Hq754VqQjxywE",
"deliveryCount": 2
},
"event": {
"specversion": "1.0",
"id": "A234-1234-1235",
"source": "/mycontext",
"time": "2018-04-05T17:31:00Z",
"type": "com.example.someeventtype",
"data": "some data"
}
},
{
"brokerProperties": {
"lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDLeaL+nRJLNq3/5NXd/T0b",
"deliveryCount": 1
},
"event": {
"specversion": "1.0",
"id": "B688-1234-1235",
"source": "/mycontext",
"type": "com.example.someeventtype",
"time": "2018-04-05T17:31:00Z",
"data": {
"somekey" : "value",
"someOtherKey" : 9
}
}
}
]
}
Leküldéses és lekéréses kézbesítés
Az Event Grid http használatával támogatja a leküldéses és lekéréses eseménykézbesítést. A leküldéses kézbesítéssel meghatározhat egy célhelyet egy esemény-előfizetésben, egy webhookban vagy egy Azure-szolgáltatásban, amelyre az Event Grid eseményeket küld. A lekéréses kézbesítéssel az előfizető alkalmazások az Event Gridhez csatlakoznak az események felhasználásához. A lekéréses kézbesítés az Event Grid-névtér témaköreiben támogatott.
Fontos
Az Event Hubs a névtértémakörökre vonatkozó előfizetések célhelyeként támogatott. A következő kiadásokban az Event Grid-névterek támogatják az Event Grid Basicben jelenleg elérhető összes célhelyet, valamint további célhelyeket is.
Mikor érdemes leküldéses kézbesítést és lekéréses kézbesítést használni?
Az alábbi általános irányelvek segítenek eldönteni, hogy mikor érdemes lekéréses vagy leküldéses kézbesítést használni.
Lekéréses kézbesítés
- Az események fogadásának időpontjával kapcsolatos teljes körű ellenőrzésre van szüksége. Előfordulhat például, hogy az alkalmazás nem áll naprakészen, nem elég stabil, vagy bizonyos időpontokban dolgoz fel adatokat.
- Teljes körűen szabályoznia kell az eseményhasználatot. A fogyasztói alkalmazásban például egy downstream szolgáltatás vagy réteg olyan problémával rendelkezik, amely megakadályozza az események feldolgozását. Ebben az esetben a lekéréses kézbesítési API lehetővé teszi a fogyasztói alkalmazás számára, hogy kiadjon egy már olvasható eseményt a közvetítőnek, hogy később kézbesíthető legyen.
- Privát hivatkozásokat szeretne használni az események fogadásakor, ami csak a lekéréses kézbesítéssel lehetséges, nem pedig a leküldéses kézbesítéssel.
- Nem tehet közzé végpontot, és nem használhat leküldéses kézbesítést, de az események felhasználásához csatlakozhat az Event Gridhez.
Leküldéses kézbesítés
- El szeretné kerülni az állandó lekérdezést annak megállapításához, hogy rendszerállapot-változás történt-e. Az Event Grid használatával inkább eseményeket küldhet Önnek az állapotváltozások idején.
- Van egy olyan alkalmazása, amely nem tud kimenő hívásokat kezdeményezni. Előfordulhat például, hogy a szervezet aggódik az adatok kiszivárgása miatt. Az alkalmazás azonban nyilvános végponton keresztül fogadhatja az eseményeket.
Következő lépések
Az alábbi cikkekből megtudhatja, hogyan használhatja az Event Gridet, vagy további információkat kaphat a fogalmakról.
- Névtértémakörök használatával tehet közzé és iratkozhat fel eseményekre.
Egyéb hasznos hivatkozások
- Vezérlősík és adatsík SDK-k.
- Az adatsík-SDK-k bejelentése számos információval, mintával és hivatkozással.
- Kvóták és korlátok.