Aracılığıyla paylaş


Azure Event Grid Ad Alanları - CloudEvents şeması desteği

Event Grid ad alanı konuları, JSON biçiminde HTTP protokol bağlamasınıkullanarak Cloud Native Computing Foundation'ın (CNCF) açık standart CloudEvents 1.0 belirtimine uygun olayları kabul eder. CloudEvent, iletileneni içeren, olay verileri olarak adlandırılan ve bununla ilgili meta veriler içeren bir ileti türüdür. Olay temelli mimarilerdeki olay verileri genellikle sistem durumu değişikliği duyurulan bilgileri taşır. CloudEvents meta verileri, iletinin kaynağı (kaynak sistem), türü vb. gibi bağlamsal bilgiler sağlayan bir öznitelik kümesinden oluşur. CloudEvents belirtimlerine uygun tüm geçerli iletiler aşağıdaki gerekli bağlam özniteliklerini içermelidir:

CloudEvents belirtimi, Event Grid kullanırken ekleyebileceğiniz isteğe bağlı ve uzantı bağlamı özniteliklerini de tanımlar.

CloudEvents, Event Grid kullanırken iyi belgelenmiş kullanım örnekleri (olayları aktarma modları , olay biçimleri vb.), genişletilebilirlik ve geliştirilmiş birlikte çalışabilirlik nedeniyle tercih edilen olay biçimidir. CloudEvents, olayları yayımlamak ve kullanmak için ortak bir olay biçimi sağlayarak birlikte çalışabilirliği geliştirir. Tekdüzen araçlara ve olayları yönlendirmenin ve işlemenin standart yollarını sağlar.

CloudEvents con çadır modu s

CloudEvents belirtimi üç çadır modu tanımlar: ikili, yapılandırılmış ve toplu.

Önemli

Herhangi bir eksiyle çadır modu metin (JSON, metin/*, vb.) veya ikili kodlanmış olay verilerini değiştirebilirsiniz. İkili con çadır modu yalnızca ikili veri göndermek için kullanılmaz.

Con çadır modu s, kullandığınız kodlama, ikili veya metinle değil, olay verilerinin ve meta verilerinin nasıl tanımlandığı ve değiştirildiğinden söz eder. Yapılandırılmış con çadır modu tek bir yapı kullanır; örneğin, bağlam özniteliklerinin ve olay verilerinin HTTP yükünde bir araya geldiği bir JSON nesnesi. İkili con çadır modu, HTTP üst bilgilerine eşlenen bağlam özniteliklerini ve içinde ayarlanan Content-Typemedya türüne göre kodlanmış HTTP yükü olan olay verilerini ayırır.

CloudEvents desteği

Bu tabloda CloudEvents belirtimi için geçerli destek gösterilmektedir:

CloudEvents con çadır modu Destekleniyor mu?
Yapılandırılmış JSON Yes
Yapılandırılmış JSON toplu iş Evet, olayları yayımlamak için
İkili Evet, olayları yayımlamak için

Bir olay için izin verilen boyut üst sınırı 1 MB'tır. 64 KB üzerindeki olaylar 64 KB'lık artışlarla ücretlendirilir.

Yapılandırılmış con çadır modu

CloudEvents yapılandırılmış con çadır modu içindeki bir ileti, http yükünde hem bağlam özniteliklerine hem de olay verilerine sahiptir.

Önemli

Event Grid şu anda CLOUDEvents JSON biçimini HTTP ile destekler.

Aşağıda, JSON biçimini kullanan yapılandırılmış modda CloudEvents örneği verilmiştir. Hem meta veriler ("veri" olmayan tüm öznitelikler) hem de ileti/olay verileri ("veri" nesnesi) JSON kullanılarak açıklanmıştır. Örneğimiz tüm gerekli bağlam özniteliklerinin yanı sıra bazı isteğe bağlı öznitelikleri (subject, timeve datacontenttype) ve uzantı özniteliklerini (comexampleextension1, comexampleothervalue) içerir.

{
    "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"
    }
}

JSON değeri olmayan olay verilerini göndermek için yapılandırılmış içerikle JSON biçimini kullanabilirsiniz. Bu amaçla aşağıdaki adımları uygulayın:

  1. Verilerin kodlandığı medya türüne sahip bir datacontenttype öznitelik ekleyin.
  2. Medya türü , text/csvveya application/xmlgibi text/plainbir metin biçiminde kodlanmışsa, değer olarak ilettiğiniz içeriği içeren bir JSON dizesine sahip bir data öznitelik kullanmalısınız.
  3. Medya türü bir ikili kodlamayı temsil ediyorsa, değeri BASE64 kodlanmış ikili değerini içeren bir JSON dizesi olan bir öznitelik kullanmalısınızdata_base64.

Örneğin, bu CloudEvent, Protobuf iletilerini değiştirmek için içinde application/protobuf kodlanmış olay verilerini taşır.

{
    "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=="
}

veya data_base64 özniteliklerinin data kullanımı hakkında daha fazla bilgi için bkz. Verilerin işlenmesi.

Bu con çadır modu hakkında daha fazla bilgi için bkz. CloudEvents HTTP yapılandırılmış con çadır modu belirtimleri .

Toplu con çadır modu

Event Grid şu anda CloudEvents'i Event Grid'de yayımlarkenJSON toplu con çadır modu destekler. Bu con çadır modu yapılandırılmış con çadır modu içinde CloudEvents ile dolu bir JSON dizisi kullanır. Örneğin, uygulamanız aşağıdaki gibi bir dizi kullanarak iki olay yayımlayabilir. Benzer şekilde, Event Grid'in veri düzlemi SDK'sını kullanıyorsanız, bu yük de gönderilen yük olur:

[
    {
        "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
        }
    }
]

Daha fazla bilgi için bkz. CloudEvents Toplu İçerik Modu belirtimleri.

İşlem grubu oluşturma

Uygulamanızın tek bir yayımlama isteğiyle daha fazla verimlilik ve daha yüksek aktarım hızı elde etmek için bir dizide birkaç olayı birlikte toplu olarak işlemesi gerekir. Toplu işlemler 1 MB'a kadar olabilir ve bir olayın boyutu üst sınırı 1 MB'tır.

İkili con çadır modu

İkili con çadır modu içindeki CloudEvent'in bağlam öznitelikleri HTTP üst bilgileri olarak tanımlanır. HTTP üst bilgilerinin adları, ön ekli ce-bağlam özniteliğinin adıdır. Üst bilgi, Content-Type olay verilerinin kodlandığı medya türünü yansıtır.

Önemli

İkili con kullanılırken çadır modu ce-datacontenttype HTTP üst bilgisi de BULUNMAMALIDIR.

Önemli

İkili con çadır modu kullanırken kendi özniteliklerinizi (uzantı öznitelikleri) eklemeyi planlıyorsanız, adlarının ASCII karakterinden küçük harflerden ('a' 'z') veya rakamlardan ('0' ile '9' arasında) oluştuğundan ve 20 karakteri aşmadığından emin olun. Diğer bir ifadeyle, CloudEvents bağlam özniteliklerini adlandırmaya yönelik adlandırma kuralı geçerli HTTP üst bilgi adlarından daha kısıtlayıcıdır. Her geçerli HTTP üst bilgi adı geçerli bir uzantı öznitelik adı değildir.

HTTP yükü, içindeki medya türüne Content-Typegöre kodlanmış olay verileridir.

CloudEvent'i içerik ikili modunda yayımlamak için kullanılan http isteği şu örneğe benzer olabilir:

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.

CloudEvents ikili veya yapılandırılmış con ne zaman kullanılır çadır modu

CloudEvents'i atlamalar ve protokoller arasında iletmek için basit bir yaklaşım istiyorsanız yapılandırılmış con çadır modu kullanabilirsiniz. Yapılandırılmış con'da CloudEvent çadır modu iletiyi meta verileriyle birlikte içerdiğinden, istemcilerin bunu bir bütün olarak kullanmaları ve diğer sistemlere iletmeleri kolaydır.

Aşağı akış uygulamalarının ek bilgi olmadan yalnızca iletiye (bağlam öznitelikleri) ihtiyaç duymasını biliyorsanız ikili con çadır modu kullanabilirsiniz. Yapılandırılmış con ile çadır modu cloudEvent'den olay verilerini (ileti) almaya devam edebilirsiniz ancak tüketici uygulamasının yalnızca HTTP yükünde olması daha kolaydır. Örneğin, diğer uygulamalar diğer protokolleri kullanabilir ve meta verileriyle değil yalnızca temel iletinizle ilgilenebilir. Aslında meta veriler yalnızca ilk atlama için uygun olabilir. Bu durumda, meta verilerinden farklı olarak değiştirmek istediğiniz verilerin olması, daha kolay işleme ve iletmeye yardımcı olur.