Menarik pengiriman dengan HTTP

Artikel ini dibuat berdasarkan artikel Apa itu Azure Event Grid? dan pada konsep Event Grid untuk memberikan informasi penting sebelum Anda mulai menggunakan pengiriman penarikan Event Grid melalui HTTP. Ini mencakup konsep dasar, model sumber daya, dan mode pengiriman pesan yang didukung. Di akhir dokumen ini, Anda menemukan tautan berguna ke artikel yang memandu Anda tentang cara menggunakan Event Grid dan ke artikel yang menawarkan informasi konseptual mendalam.

Catatan

Dokumen ini membantu Anda memulai kemampuan Event Grid yang menggunakan protokol HTTP. Artikel ini cocok untuk pengguna yang perlu mengintegrasikan aplikasi di cloud. Jika Anda perlu mengomunikasikan data perangkat IoT, lihat Gambaran Umum fitur MQTT Broker di Azure Event Grid.

CloudEvents

Topik namespace Layanan Event Grid menerima peristiwa yang mematuhi spesifikasi Cloud Native Computing Foundation (CNCF) CloudEvents 1.0 standar terbuka menggunakan protokol HTTP yang mengikat dengan format JSON.

Lihat konsep CloudEvents untuk informasi selengkapnya.

CloudEvents con mode tenda s

Spesifikasi CloudEvents menentukan tiga con mode tenda yang dapat Anda gunakan: biner, terstruktur, dan batch.

Penting

Dengan con mode tenda Anda dapat bertukar teks (JSON, teks/*, dll.) atau data peristiwa yang dikodekan biner. Biner con mode tenda tidak secara eksklusif digunakan untuk mengirim data biner.

Con mode tenda s bukan tentang pengodean yang Anda gunakan, biner atau teks, tetapi tentang bagaimana data peristiwa dan metadatanya dijelaskan dan ditukar. Con terstruktur mode tenda menggunakan satu struktur, misalnya, objek JSON, di mana atribut konteks dan data peristiwa bersama-sama dalam payload HTTP. Biner con mode tenda memisahkan atribut konteks, yang dipetakan ke header HTTP, dan data peristiwa, yang merupakan payload HTTP yang dikodekan sesuai dengan nilai jenis media di Content-Type.

Lihat CloudEvents con mode tenda s untuk informasi selengkapnya.

Pesan dan peristiwa

CloudEvent biasanya membawa data peristiwa yang mengumumkan kemunculan dalam sistem, yaitu perubahan status sistem. Namun, Anda dapat menyampaikan segala jenis data saat menggunakan CloudEvents. Misalnya, Anda mungkin ingin menggunakan format pertukaran CloudEvents untuk mengirim pesan perintah untuk meminta tindakan ke aplikasi hilir. Contoh lain adalah ketika Anda merutekan pesan dari broker MQTT Event Grid ke topik. Dalam skenario ini, Anda merutekan pesan MQTT yang dibungkus dalam amplop CloudEvents.

Pengiriman penarikan

Dengan pengiriman tarik, aplikasi Anda terhubung ke Event Grid untuk membaca CloudEvents menggunakan semantik seperti antrean.

Pengiriman penarikan menawarkan manfaat konsumsi peristiwa ini:

  • Gunakan peristiwa dengan kecepatan Anda sendiri, dalam skala besar atau pada tingkat masuk yang didukung aplikasi Anda.

  • Mengonsumsi peristiwa pada waktu yang Anda pilih sendiri. Misalnya, persyaratan bisnis yang diberikan, pesan diproses pada malam hari.

  • Gunakan peristiwa melalui tautan privat sehingga data Anda menggunakan ruang IP privat.

Catatan

  • Namespace menyediakan model sumber daya yang lebih sederhana yang menampilkan satu jenis topik. Saat ini, Event Grid mendukung penerbitan peristiwa aplikasi Anda sendiri melalui topik namespace layanan. Anda tidak dapat menggunakan peristiwa dari layanan Azure atau sistem SaaS mitra menggunakan topik namespace layanan. Anda juga tidak dapat membuat topik sistem, topik domain, atau topik mitra di namespace layanan.
  • Topik namespace mendukung format JSON CloudEvents.

Langganan peristiwa antrean

Saat menerima peristiwa atau menggunakan operasi yang mengelola status peristiwa, aplikasi menentukan titik akhir HTTP namespace, nama topik, dan nama langganan peristiwa antrean. Langganan peristiwa antrean memiliki deliveryMode yang diatur ke "antrean". Langganan peristiwa antrean digunakan untuk menggunakan peristiwa menggunakan API pengiriman pull. Untuk informasi selengkapnya tentang cara membuat sumber daya ini, lihat membuat namespace layanan, topik, dan langganan peristiwa.

Anda menggunakan langganan peristiwa untuk menentukan kriteria pemfilteran untuk peristiwa dan dalam melakukannya, Anda secara efektif menentukan kumpulan peristiwa yang tersedia untuk dikonsumsi melalui langganan peristiwa tersebut. Satu atau beberapa aplikasi pelanggan (konsumen) dapat terhubung ke titik akhir namespace yang sama dan menggunakan topik dan langganan peristiwa yang sama.

Diagram tingkat tinggi penerbit dan konsumen menggunakan langganan peristiwa. Konsumen menggunakan pengiriman pull.

Operasi pengiriman penarikan

Aplikasi Anda menggunakan operasi berikut saat bekerja dengan pengiriman penarikan.

  • Operasi penerimaan digunakan untuk membaca satu atau beberapa peristiwa menggunakan satu permintaan ke Event Grid. Secara default, broker menunggu hingga 60 detik agar peristiwa tersedia. Misalnya, peristiwa tersedia untuk pengiriman saat pertama kali diterbitkan. Permintaan penerimaan yang berhasil mengembalikan nol atau lebih peristiwa. Jika peristiwa tersedia, peristiwa tersebut mengembalikan peristiwa yang tersedia sebanyak mungkin hingga jumlah peristiwa yang diminta. Event Grid juga mengembalikan token kunci untuk setiap peristiwa yang dibaca.
  • Token kunci adalah jenis handel yang mengidentifikasi peristiwa yang dapat Anda gunakan untuk mengontrol statusnya.
  • Setelah aplikasi konsumen menerima peristiwa dan memprosesnya, aplikasi tersebut mengakui peristiwa tersebut. Operasi ini menginstruksikan Event Grid untuk menghapus peristiwa sehingga tidak disebarkan ulang ke klien lain. Aplikasi konsumen mengakui satu atau beberapa token dengan satu permintaan dengan menentukan token kunci mereka sebelum kedaluwarsa.

Dalam beberapa kesempatan lain, aplikasi konsumen Anda mungkin ingin merilis atau menolak peristiwa.

  • Aplikasi konsumen Anda merilis peristiwa yang diterima untuk memberi sinyal Event Grid bahwa tidak siap untuk memproses peristiwa tersebut dan membuatnya tersedia untuk redelivery. Ini melakukannya dengan memanggil operasi rilis dengan token kunci yang mengidentifikasi peristiwa yang akan dikembalikan ke Event Grid. Aplikasi Anda dapat mengontrol apakah peristiwa harus segera dirilis atau jika penundaan harus digunakan sebelum peristiwa tersedia untuk redelivery.

  • Anda dapat memilih untuk menolak peristiwa jika ada kondisi, mungkin permanen, yang mencegah aplikasi konsumen Anda memproses peristiwa. Misalnya, pesan cacat dapat ditolak karena tidak dapat berhasil diurai. Peristiwa yang ditolak dinyatakan mati, jika tujuan surat gagal tersedia. Jika tidak, mereka akan dihilangkan.

Cakupan operasi pengiriman penarikan mana yang berjalan

Saat Anda memanggil operasi terima, akui, rilis, tolak, atau perbarui kunci, tindakan tersebut dilakukan dalam konteks langganan peristiwa. Misalnya, jika Anda mengakui peristiwa, peristiwa tersebut tidak lagi tersedia melalui langganan peristiwa yang digunakan saat memanggil tindakan pengakuan . Langganan peristiwa lainnya masih dapat memiliki peristiwa "sama" yang tersedia. Itu karena langganan peristiwa mendapatkan salinan peristiwa yang diterbitkan. Salinan peristiwa tersebut secara efektif berbeda satu sama lain di seluruh langganan peristiwa. Setiap acara memiliki statusnya sendiri yang independen dari peristiwa lain.

Bentuk data saat menerima peristiwa menggunakan pengiriman pull

Saat mengirimkan peristiwa menggunakan pengiriman pull, Event Grid menyertakan array objek yang pada gilirannya mencakup objek peristiwa dan brokerProperties . Nilai properti peristiwa adalah CloudEvent yang dikirimkan dalam con terstruktur mode tenda. Objek brokerProperties berisi token kunci yang terkait dengan CloudEvent yang dikirimkan. Objek json berikut adalah respons sampel dari operasi penerimaan yang mengembalikan dua peristiwa:

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

Pendorongan dan penarikan pengiriman

Event Grid mendukung pengiriman peristiwa pendorongan dan penarikan menggunakan HTTP. Dengan pengiriman push, Anda menentukan tujuan dalam langganan peristiwa, webhook, atau layanan Azure, tempat Event Grid mengirim peristiwa. Dengan pengiriman pull, aplikasi pelanggan terhubung ke Event Grid untuk mengonsumsi peristiwa. Pengiriman penarikan didukung untuk topik di namespace Layanan Event Grid.

Penting

Azure Event Hubs didukung sebagai tujuan langganan ke topik namespace layanan. Dalam rilis mendatang, Namespace Event Grid akan mendukung semua tujuan yang saat ini tersedia di Event Grid Basic bersama dengan tujuan tambahan.

Diagram tingkat tinggi memperlihatkan pengiriman push dan pengiriman tarik dengan jenis sumber daya yang terlibat.

Kapan menggunakan pengiriman push vs. pengiriman penarikan

Berikut ini adalah panduan umum untuk membantu Anda memutuskan kapan harus menggunakan pengiriman pull atau push.

Pengiriman penarikan

  • Anda memerlukan kontrol penuh kapan harus menerima peristiwa. Misalnya, aplikasi Anda mungkin tidak aktif sepanjang waktu, tidak cukup stabil, atau Anda memproses data pada waktu tertentu.
  • Anda memerlukan kontrol penuh atas konsumsi peristiwa. Misalnya, layanan atau lapisan hilir di aplikasi konsumen Anda memiliki masalah yang mencegah Anda memproses peristiwa. Dalam hal ini, API pengiriman penarikan memungkinkan aplikasi konsumen untuk merilis peristiwa yang sudah dibaca kembali ke broker sehingga dapat dikirimkan nanti.
  • Anda ingin menggunakan tautan privat saat menerima peristiwa, yang hanya dimungkinkan dengan pengiriman pull, bukan pengiriman push.
  • Anda tidak memiliki kemampuan untuk mengekspos titik akhir dan menggunakan pengiriman push, tetapi Anda dapat terhubung ke Event Grid untuk menggunakan peristiwa.

Pengiriman push

  • Anda ingin menghindari polling konstan untuk menentukan bahwa perubahan status sistem telah terjadi. Anda lebih suka menggunakan Event Grid untuk mengirim peristiwa kepada Anda pada saat perubahan status terjadi.
  • Anda memiliki aplikasi yang tidak dapat melakukan panggilan keluar. Misalnya, organisasi Anda mungkin khawatir tentang penyelundupan data. Namun, aplikasi Anda dapat menerima peristiwa melalui titik akhir publik.

Langkah berikutnya

Artikel berikut ini memberi Anda informasi tentang cara menggunakan Event Grid atau memberi Anda informasi tambahan tentang konsep.