Lekéréses kézbesítés HTTP-vel

Ez a cikk az Azure Event Grid bemutatása és az alapfogalmakról szóló cikkekre épül, amelyek alapvető információkat nyújtanak, mielőtt elkezdené használni az Event Grid lekéréses kézbesítését HTTP-n keresztül. Az alapvető fogalmakat, az erőforrásmodelleket és a támogatott ü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özadatokat kell kommunikálnia, tekintse meg az Azure Event Grid Message Queuing Telemetry and Transport (MQTT) Broker funkciójának áttekintését.

CloudEvents

Az Event Grid névtértémái a Cloud Native Computing Foundation (CNCF) nyílt standard CloudEvents 1.0-s specifikációjának megfelelő eseményeket fogadnak el a JSON formátumúHTTP protokollkötés használatával.

További információ: CloudEvents-támogatás.

CloudEvents tartalom módok

A CloudEvents specifikációja három tartalom módot definiál, amelyet használhat: bináris, strukturált és kötegelt.

Fontos

Bármilyen tartalommódban cserélhet szöveget (JSON, szöveg/*és hasonló típusok) vagy bináris kódolt eseményadatokat. A bináris tartalom mód nem kizárólag bináris adatok küldéséhez használható.

A tartalommódok 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 tartalommó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 vannak a HTTP hasznos adataiban. A bináris tartalom mód elválasztja a HTTP-fejlécekhez társított környezet attribútumait és az eseményadatokat, amelyek a HTTP hasznos adatait alkotják, és a médiatípus értéke alapján vannak kódolva Content-Type.

További információ: CloudEvents tartalommódok.

Ü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 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 MQTT-üzenetet irányít, ami egy CloudEvents-borítékba van csomagolva.

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 pull-alapú kézbesítés az alábbi eseményfogyasztási előnyöket kínálja:

  • Az eseményeket saját tempójában, méretezhetően, vagy az alkalmazás által támogatott adatbeviteli ráta szerint dolgozhatja fel.

  • Eseményeket saját maga által választott időpontban dolgozzon fel. Például az üzleti követelményeknek megfelelően éjszaka dolgozza fel az üzeneteket.

  • Privát kapcsolaton keresztül vegyen igénybe eseményeket, hogy az adatok privát IP-címet 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émakörök használatával nem használhatja fel az Azure-szolgáltatásokból vagy a partner SaaS-rendszerekből származó eseményeket. Rendszertémakörök, tartománytémakörök és partnertémakörök nem hozhatók létre névtérben.
  • A névtértémakörök támogatják a CloudEvents JSON formátumát.

Sorbanállási 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 eseményelőfizetés deliveryMode beállítása: *queue*. A várólistás esemény-előfizetéseket az események lekéréses kézbesítési API-val történő fogyasztására használják. 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.

Az események szűrési feltételeinek meghatározásához esemény-előfizetést használ. A szűrési feltételek meghatározásával hatékonyan definiálhatja az adott 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.

Egy közzétevőt és fogyasztót ábrázoló ábra, amely egy esemény-előfizetést használ lekéréses kézbesítéssel.

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ényt olvas be egyetlen, az Event Gridnek küldött kéréssel. 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 fogantyú egy olyan eszköz, amely azonosít egy eseményt, amelynek állapotát szabályozhatja.
  • 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 tokent egyetlen kéréssel nyugtáz, azáltal hogy meghatározza a zárolási tokeneket azok lejárata 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 a zárolási tokenekkel, amelyek azonosítják az eseményeket, hogy visszatérjenek az Event Grid számára. 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 nem elemezhetők és elutasíthatók. Az elutasított események holtbetűsek, ha elérhető a holtbetűs célhely. Ellenkező esetben el lesznek dobva.

A hatókör, amelyen a lekéréses kézbesítési műveletek végrehajtása történik

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. Ez a rendelkezésre állás azért létezik, mert egy esemény-előfizetés megkapja a közzétett események másolatát. Ezek az eseménymásolatok ténylegesen elkülönülnek egymástól az esemény-előfizetési rendszerekben. 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ény tulajdonság értéke a strukturált tartalom módban 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. Az Event Grid-névtér témáiban a lekéréses kézbesítés 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.

Magas szintű diagram a leküldéses kézbesítésről és a lekéréses kézbesítésről az érintett erőforrások típusával.

Mikor érdemes push típusú kézbesítést és pull típusú 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.

Push 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. Inkább az Event Gridet használja, hogy eseményeket küldjön Önnek, amikor állapotváltozások történnek.
  • 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.