Skema peristiwa Azure Event Grid

Artikel ini menjelaskan skema Event Grid, yang merupakan format peristiwa kepemilikan, tidak dapat diperluas, namun berfungsi penuh. Event Grid masih mendukung format kejadian ini dan akan terus mendukungnya. Namun, CloudEvents adalah format peristiwa yang direkomendasikan untuk digunakan. Jika Anda menggunakan aplikasi yang menggunakan format Event Grid, Anda mungkin menemukan informasi yang berguna di bagian [CloudEvents] yang menjelaskan transformasi antara format Event Grid dan CloudEvents yang didukung oleh Event Grid.

Artikel ini menjelaskan secara rinci properti dan skema untuk format Event Grid. Peristiwa terdiri dari satu set dari empat properti string yang diperlukan. Properti umum untuk semua peristiwa dari penerbit mana pun. Objek data memiliki properti yang khusus untuk setiap penerbit. Untuk topik sistem, properti ini khusus untuk penyedia sumber daya, seperti Azure Storage atau Azure Event Hub.

Sumber peristiwa mengirim peristiwa ke Azure Event Grid dalam array yang dapat memiliki beberapa objek peristiwa. Saat memposting peristiwa ke topik Event Grid, array dapat memiliki ukuran total hingga 1 MB. Setiap peristiwa dalam array dibatasi hingga 1 MB. Jika peristiwa atau array lebih besar dari batas ukuran, Anda menerima respons 413 Payload Terlalu Besar. Operasi dibebankan pada peningkatan 64 KB. Jadi, peristiwa lebih dari 64 KB dikenakan biaya operasi seolah-olah mereka adalah beberapa peristiwa. Misalnya, peristiwa berukuran 130 KB akan menimbulkan operasi seolah-olah itu adalah tiga peristiwa terpisah.

Event Grid mengirimkan peristiwa kepada pelanggan dalam array yang memiliki satu peristiwa. Perilaku ini dapat berubah di masa mendatang.

Anda dapat menemukan skema JSON untuk peristiwa Event Grid dan setiap payload data penerbit Azure di penyimpanan Skema Peristiwa.

Skema peristiwa

Contoh berikut menunjukkan properti yang digunakan oleh semua penerbit peristiwa:

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]

Misalnya, skema yang diterbitkan untuk peristiwa penyimpanan Azure Blob adalah:

[
  {
    "topic": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount",
    "subject": "/blobServices/default/containers/oc2d2817345i200097container/blobs/oc2d2817345i20002296blob",
    "eventType": "Microsoft.Storage.BlobCreated",
    "eventTime": "2017-06-26T18:41:00.9584103Z",
    "id": "831e1650-001e-001b-66ab-eeb76e069631",
    "data": {
      "api": "PutBlockList",
      "clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
      "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
      "eTag": "0x8D4BCC2E4835CD0",
      "contentType": "application/octet-stream",
      "contentLength": 524288,
      "blobType": "BlockBlob",
      "url": "https://oc2d2817345i60006.blob.core.windows.net/oc2d2817345i200097container/oc2d2817345i20002296blob",
      "sequencer": "00000000000004420000000000028963",
      "storageDiagnostics": {
        "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
      }
    },
    "dataVersion": "",
    "metadataVersion": "1"
  }
]

Properti kejadian

Semua peristiwa memiliki data tingkat teratas yang sama berikut ini:

Properti Tipe Diperlukan Deskripsi
topic string Tidak, tetapi jika disertakan, harus sesuai dengan topik Event Grid ID Azure Resource Manager. Jika tidak disertakan, stempel Event Grid ke acara. Jalur sumber daya lengkap ke sumber kejadian. Bidang ini tidak dapat ditulis. Event Grid memberikan nilai ini.
subject string Ya Jalur yang ditentukan penerbit ke subjek kejadian.
eventType string Ya Salah satu jenis kejadian terdaftar untuk sumber kejadian ini.
eventTime string Ya Waktu peristiwa dibuat berdasarkan waktu UTC penyedia.
id string Ya Pengidentifikasi unik untuk peristiwa tersebut.
data object Ya Data peristiwa khusus untuk penyedia sumber.
dataVersion string Tidak, tetapi akan ditandai dengan nilai kosong. Versi skema objek data. Penerbit mendefinisikan versi skema.
metadataVersion string Tidak diperlukan, tetapi jika disertakan, harus cocok dengan Skema Event Grid metadataVersion (saat ini, hanya 1). Jika tidak disertakan, stempel Event Grid ke acara. Versi skema metadata kejadian. Event Grid mendefinisikan skema properti tingkat atas. Event Grid memberikan nilai ini.

Untuk mempelajari tentang properti di objek data, lihat sumber peristiwa:

Untuk topik kustom, penerbit peristiwa menentukan objek data. Data tingkat atas harus memiliki bidang yang sama dengan peristiwa standar yang ditentukan sumber daya.

Saat menerbitkan kejadian ke topik khusus, buat subjek untuk kejadian Anda yang memudahkan pelanggan untuk mengetahui apakah mereka tertarik dengan kejadian tersebut. Pelanggan menggunakan properti subjek untuk memfilter dan merutekan peristiwa. Pertimbangkan untuk menyediakan jalur tempat peristiwa terjadi sehingga pelanggan dapat memfilter berdasarkan segmen jalur tersebut. Jalur ini memungkinkan pelanggan untuk memfilter kejadian secara sempit atau luas. Jika Anda menyediakan jalur tiga segmen seperti /A/B/C dalam subjek, pelanggan dapat memfilter berdasarkan segmen pertama /A untuk mendapatkan set peristiwa yang luas. Pelanggan tersebut mendapatkan peristiwa dengan subjek seperti /A/B/C atau /A/D/E. Pelanggan lain dapat memfilter berdasarkan /A/B untuk mendapatkan set peristiwa yang lebih sempit.

Terkadang, subjek Anda membutuhkan detail selengkapnya tentang apa yang terjadi. Misalnya, penerbit Akun Penyimpanan memberikan subjek /blobServices/default/containers/<container-name>/blobs/<file> saat file ditambahkan ke kontainer. Pelanggan dapat memfilter berdasarkan jalur /blobServices/default/containers/testcontainer untuk mendapatkan semua peristiwa untuk kontainer itu tetapi bukan kontainer lain di akun penyimpanan tersebut. Pelanggan juga dapat memfilter atau merutekan berdasarkan sufiks .txt untuk hanya menangani file teks.

CloudEvents

CloudEvents adalah format peristiwa yang direkomendasikan untuk digunakan. Azure Event Grid terus berinvestasi dalam fitur yang terkait dengan setidaknya format JSON CloudEvents. Mengingat fakta bahwa beberapa sumber peristiwa seperti layanan Azure menggunakan format Event Grid, tabel berikut disediakan untuk membantu Anda memahami transformasi yang didukung saat menggunakan format CloudEvents dan Event Grid sebagai skema input dalam topik dan sebagai skema output dalam langganan peristiwa. Skema output Event Grid tidak dapat digunakan saat menggunakan CloudEvents sebagai skema input karena CloudEvents mendukung atribut ekstensi yang tidak didukung oleh skema Event Grid.

Skema input Skema output
Format CloudEvents Format CloudEvents
Format Event Grid Format CloudEvents
Format Event Grid Format Event Grid

Langkah berikutnya