Sdílet prostřednictvím


Obory názvů Azure Event Gridu – podpora schématu CloudEvents

Témata oboru názvů Event Gridu přijímají události, které splňují standardní specifikaci CloudEvents 1.0 (CloudEvents 1.0) v souladu s otevřenou specifikací CLOUDEvents 1.0 pomocí vazby protokolu HTTP ve formátu JSON. CloudEvent je druh zprávy, která obsahuje to, co se komunikuje, označuje se jako data událostí a metadata o něm. Data událostí v architekturách řízených událostmi obvykle obsahují informace o změnách stavu systému. Metadata CloudEvents se skládají ze sady atributů, které poskytují kontextové informace o zprávě, jako je její původ (zdrojový systém), jeho typ atd. Všechny platné zprávy, které dodržují specifikace CloudEvents, musí obsahovat následující požadované kontextové atributy:

Specifikace CloudEvents také definuje volitelné a rozšiřující kontextové atributy, které můžete zahrnout při použití Event Gridu.

Při použití Event Gridu je CloudEvents upřednostňovaným formátem události kvůli dobře zdokumentovaným případům použití (režimy pro přenos událostí, formátů událostí atd.), rozšiřitelnost a vylepšená interoperabilita. CloudEvents zlepšuje interoperabilitu tím, že poskytuje společný formát událostí pro publikování a využívání událostí. Umožňuje jednotné nástroje a standardní způsoby směrování a zpracování událostí.

CloudEvents con režim stanu s

Specifikace CloudEvents definuje tři kon režim stanu s: binární, strukturované a dávkové.

Důležité

S libovolným kódem con režim stanu můžete vyměňovat text (JSON, text/*atd.) nebo data událostí s binárním kódováním. Binární kon režim stanu se nepoužívá výhradně pro odesílání binárních dat.

Con režim stanu nejsou o kódování, které používáte, binární nebo text, ale o tom, jak jsou data událostí a jejich metadata popsána a vyměňována. Strukturovaná kon režim stanu používá jednu strukturu, například objekt JSON, kde jsou kontextové atributy i data událostí společně v datové části HTTP. Binární kon režim stanu odděluje kontextové atributy, které jsou mapovány na hlavičky HTTP, a data událostí, což je datová část HTTP kódovaná podle typu média nastaveného v Content-Type.

Podpora CloudEvents

Tato tabulka ukazuje aktuální podporu specifikace CloudEvents:

CloudEvents con režim stanu Podporováno?
Strukturovaný JSON Ano
Strukturované dávkování JSON Ano, pro publikování událostí
Binární Ano, pro publikování událostí

Maximální povolená velikost události je 1 MB. Události nad 64 kB se účtují v přírůstcích po 64 kB.

Strukturovaná kon režim stanu

Zpráva ve strukturovaném conu CloudEvents režim stanu obsahuje kontextové atributy i data událostí v datové části HTTP.

Důležité

Event Grid v současné době podporuje formát JSON CloudEvents s protokolem HTTP.

Tady je příklad CloudEvents ve strukturovaném režimu pomocí formátu JSON. Metadata (všechny atributy, které nejsou "data") a data zprávy/události (objekt data) jsou popsány pomocí JSON. Náš příklad obsahuje všechny požadované kontextové atributy spolu s některými volitelnými atributy (subject, timea ) a datacontenttypeatributy rozšíření (comexampleextension1, comexampleothervalue).

{
    "specversion" : "1.0",
    "type" : "com.yourcompany.order.created",
    "source" : "/orders/account/123",
    "subject" : "O-28964",
    "id" : "A234-1234-1234",
    "time" : "2018-04-05T17:31:00Z",
    "comexampleextension1" : "value",
    "comexampleothervalue" : 5,
    "datacontenttype" : "application/json",
    "data" : {
       "orderId" : "O-28964",
       "URL" : "https://com.yourcompany/orders/O-28964"
    }
}

Formát JSON se strukturovaným obsahem můžete použít k odesílání dat událostí, která nejsou hodnotou JSON. K tomuto účelu provedete následující kroky:

  1. datacontenttype Zahrňte atribut s typem média, ve kterém jsou data kódována.
  2. Pokud je typ média kódován v textovém formátu, například text/plain, text/csvnebo application/xml, měli byste použít data atribut s řetězcem JSON obsahujícím to, co komunikujete jako hodnota.
  3. Pokud typ média představuje binární kódování, měli byste použít data_base64 atribut, jehož hodnota je řetězec JSON obsahující binární hodnotu s kódováním BASE64 .

Například tento CloudEvent přenáší data událostí zakódovaná application/protobuf za účelem výměny zpráv Protobuf.

{
    "specversion" : "1.0",
    "type" : "com.yourcompany.order.created",
    "source" : "/orders/account/123",
    "id" : "A234-1234-1234",
    "time" : "2018-04-05T17:31:00Z",
    "datacontenttype" : "application/protobuf",
    "data_base64" : "VGhpcyBpcyBub3QgZW5jb2RlZCBpbiBwcm90b2J1ZmYgYnV0IGZvciBpbGx1c3RyYXRpb24gcHVycG9zZXMsIGltYWdpbmUgdGhhdCBpdCBpcyA6KQ=="
}

Další informace o použití data atributů naleznete data_base64 v tématu Zpracování dat .

Další informace o této kon režim stanu naleznete ve specifikacích strukturovaného con režim stanu CloudEvents HTTP .

Dávkové kon režim stanu

Event Grid v současné době podporuje dávkový kon režim stanu JSON při publikování CloudEvents do Event Gridu. Tento con režim stanu používá pole JSON vyplněné CloudEvents ve strukturovaném con režim stanu. Vaše aplikace může například publikovat dvě události pomocí pole, jako je následující. Podobně pokud používáte sadu SDK roviny dat služby Event Grid, je tato datová část také to, co se odesílá:

[
    {
        "specversion": "1.0",
        "id": "E921-1234-1235",
        "source": "/mycontext",
        "type": "com.example.someeventtype",
        "time": "2018-04-05T17:31:00Z",
        "data": "some data"
    },
    {
        "specversion": "1.0",
        "id": "F555-1234-1235",
        "source": "/mycontext",
        "type": "com.example.someeventtype",
        "time": "2018-04-05T17:31:00Z",
        "data": {
            "somekey" : "value",
            "someOtherKey" : 9
        }
    }
]

Další informace najdete v tématu Specifikace režimu dávkového obsahu CloudEvents.

Dávkování

Vaše aplikace by měla v poli dávkovat několik událostí, aby dosáhla vyšší efektivity a vyšší propustnosti pomocí jediné žádosti o publikování. Dávky můžou být až 1 MB a maximální velikost události je 1 MB.

Binární kon režim stanu

CloudEvent v binární kon režim stanu má své kontextové atributy popsané jako hlavičky HTTP. Názvy hlaviček HTTP jsou název atributu kontextu s předponou ce-. Hlavička Content-Type odráží typ média, ve kterém jsou data událostí kódována.

Důležité

Při použití binárního con režim stanu hlavička ce-datacontenttype HTTP NESMÍ být přítomna také.

Důležité

Pokud plánujete zahrnout vlastní atributy (tj. atributy rozšíření) při použití binární kon režim stanu, ujistěte se, že jejich názvy obsahují malá písmena (a až z) nebo číslice (0 až 9) ze znaku ASCII a že nepřekročí délku 20 znaků. To znamená, že zásady vytváření názvů pro pojmenování atributů kontextu CloudEvents jsou více omezující než platné názvy hlaviček HTTP. Ne každý platný název hlavičky HTTP je platný název atributu rozšíření.

Datová část HTTP je data událostí kódovaná podle typu média v Content-Type.

Požadavek HTTP použitý k publikování CloudEventu v binárním režimu obsahu může vypadat jako v tomto příkladu:

POST / HTTP/1.1
HOST mynamespace.eastus-1.eventgrid.azure.net/topics/mytopic
ce-specversion: 1.0
ce-type: com.example.someevent
ce-source: /mycontext
ce-id: A234-1234-1234
ce-time: 2018-04-05T17:31:00Z
ce-comexampleextension1: value
ce-comexampleothervalue: 5
content-type: application/protobuf

Binary data according to protobuf encoding format. No context attributes are included.

Kdy použít binární nebo strukturované konvence CloudEvents režim stanu

Strukturované kon režim stanu můžete použít, pokud chcete jednoduchý přístup pro předávání CloudEvents napříč segmenty směrování a protokoly. Vzhledem k tomu, že CloudEvent ve strukturovaném con režim stanu obsahuje zprávu spolu s metadaty, je snadné ji klienty využívat jako celek a předávat ji jiným systémům.

Můžete použít binární con režim stanu pokud víte, že podřízené aplikace vyžadují pouze zprávu bez dalších informací (to znamená kontextových atributů). I když se strukturovaným kon režim stanu můžete data událostí (zprávy) z CloudEventu stále získat, je jednodušší, pokud ji aplikace příjemce právě obsahuje v datové části HTTP. Jiné aplikace můžou například používat jiné protokoly a můžou se zajímat jenom o základní zprávu, ne o její metadata. Metadata můžou být ve skutečnosti relevantní pouze pro okamžitý první segment směrování. V takovém případě se data, která chcete vyměňovat, kromě metadat, hodí k jednoduššímu zpracování a přeposílání.