Terbitkan ke topik namespace layanan dan gunakan peristiwa di Azure Event Grid

Artikel ini menyediakan pengantar cepat untuk menarik pengiriman menggunakan curl perintah shell bash untuk menerbitkan, menerima, dan mengakui peristiwa. Sumber daya Event Grid dibuat menggunakan perintah CLI. Artikel ini cocok untuk pengujian cepat fungsionalitas pengiriman penarikan. Untuk kode sampel menggunakan SDK sarana data, lihat sampel .NET atau Java. Untuk Java, kami menyediakan kode sampel dalam dua artikel: menerbitkan peristiwa dan menerima mulai cepat peristiwa . Untuk informasi selengkapnya tentang model pengiriman penarikan, lihat konsep dan artikel gambaran umum pengiriman penarikan.

Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.

Prasyarat

  • Artikel ini memerlukan Azure CLI versi 2.0.70 atau yang lebih baru. Jika menggunakan Azure Cloud Shell, versi terbaru sudah terinstal.

Buat grup sumber daya

Buat grup sumber daya Azure dengan perintah pembuatan grupaz. Anda menggunakan grup sumber daya ini untuk memuat semua sumber daya yang dibuat dalam artikel ini.

Langkah-langkah umum untuk menggunakan Cloud Shell untuk menjalankan perintah adalah:

  • Pilih Buka Cloud Shell untuk melihat jendela Azure Cloud Shell di panel kanan.
  • Salin perintah dan tempelkan ke jendela Azure Cloud Shell.
  • Tekan ENTER untuk menjalankan perintah.
  1. Deklarasikan variabel untuk menyimpan nama grup sumber daya Azure. Tentukan nama untuk grup sumber daya dengan mengganti <your-resource-group-name> dengan nilai yang Anda suka.

    resource_group="<your-resource-group-name>"
    
  2. Buat grup sumber daya. Ubah lokasi sesuai keinginan Anda.

    az group create --name $resource_group --location eastus
    

Aktifkan penyedia sumber daya Event Grid

  1. Jika sebelumnya Anda belum menggunakan Event Grid di langganan Azure, Anda mungkin perlu mendaftarkan penyedia sumber daya Event Grid. Jalankan perintah berikut untuk mendaftarkan penyedia:

    az provider register --namespace Microsoft.EventGrid
    
  2. Mungkin perlu beberapa saat agar pendaftaran selesai. Untuk memeriksa status, jalankan perintah berikut:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    Saat registrationState adalah Registered, Anda siap untuk melanjutkan.

Membuat namespace

Namespace Layanan Event Grid menyediakan titik akhir yang ditentukan pengguna tempat Anda memposting peristiwa Anda. Contoh berikut membuat namespace layanan di grup sumber daya Anda menggunakan Bash di Azure Cloud Shell. Nama namespace harus unik karena merupakan bagian dari entri Sistem Nama Domain (DNS). Nama namespace harus memenuhi aturan berikut:

  • Harus antara 3-50 karakter.
  • Ini harus unik secara regional.
  • Hanya karakter yang diizinkan adalah a-z, A-Z, 0-9 dan -
  • Seharusnya tidak dimulai dengan awalan kata kunci yang dipesan seperti Microsoft, System atau EventGrid.
  1. Deklarasikan variabel untuk menyimpan nama untuk namespace Layanan Event Grid Anda. Tentukan nama untuk namespace layanan dengan mengganti <your-namespace-name> dengan nilai yang Anda suka.

    namespace="<your-namespace-name>"
    
  2. Buat kumpulan nama XML. Anda mungkin ingin mengubah lokasi tempat penyebarannya.

    az eventgrid namespace create -g $resource_group -n $namespace -l eastus
    

Membuat topik namespace layanan

Buat topik yang digunakan untuk menyimpan semua peristiwa yang diterbitkan ke titik akhir namespace.

  1. Deklarasikan variabel untuk menyimpan nama untuk topik namespace Anda. Tentukan nama untuk topik namespace dengan mengganti <your-topic-name> dengan nilai yang Anda suka.

    topic="<your-topic-name>"
    
  2. Buat topik namespace Anda:

    az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace 
    

Membuat langganan peristiwa

Buat langganan peristiwa yang mengatur mode pengirimannya ke antrean, yang mendukung pengiriman penarikan. Untuk informasi selengkapnya tentang semua opsi konfigurasi, lihat REST API sarana kontrol Event Grid terbaru.

  1. Deklarasikan variabel untuk menyimpan nama langganan peristiwa ke topik namespace Anda. Tentukan nama untuk langganan peristiwa dengan mengganti <your-event-subscription-name> dengan nilai yang Anda suka.

    event_subscription="<your-event-subscription-name>"
    
  2. Buat langganan peristiwa ke topik namespace layanan:

    az eventgrid namespace topic event-subscription create -g $resource_group --topic-name $topic -n $event_subscription --namespace-name $namespace --delivery-configuration "{deliveryMode:Queue,queue:{receiveLockDurationInSeconds:300,maxDeliveryCount:4,eventTimeToLive:P1D}}"
    

Mengirim peristiwa ke topik Anda

Sekarang, kirim contoh peristiwa ke topik namespace dengan mengikuti langkah-langkah di bagian ini.

Mencantumkan kunci akses namespace layanan

  1. Dapatkan kunci akses yang terkait dengan namespace yang Anda buat. Anda menggunakan salah satunya untuk mengautentikasi saat menerbitkan peristiwa. Untuk mencantumkan kunci, Anda memerlukan ID sumber daya namespace lengkap terlebih dahulu. Dapatkan dengan menjalankan perintah berikut:

    namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
    
  2. Dapatkan kunci pertama dari namespace:

    key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
    

Menerbitkan peristiwa

  1. Ambil nama host namespace layanan. Anda menggunakannya untuk menyusun titik akhir HTTP namespace layanan tempat peristiwa dikirim. Operasi berikut pertama kali tersedia dengan versi 2023-06-01-previewAPI .

    publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
    
  2. Buat contoh peristiwa yang sesuai dengan CloudEvents :

    event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
    

    Elemen data adalah payload peristiwa Anda. Setiap JSON yang terbentuk dengan baik dapat masuk dalam bidang ini. Untuk informasi selengkapnya tentang properti (juga dikenal sebagai atribut konteks) yang dapat masuk dalam suatu peristiwa, lihat spesifikasi CloudEvents .

  3. Gunakan CURL untuk mengirim peristiwa ke topik tersebut. CURL adalah utilitas yang mengirim permintaan HTTP.

    curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
    

Menerima peristiwa

Anda menerima peristiwa dari Event Grid menggunakan titik akhir yang merujuk ke langganan peristiwa.

  1. Buat titik akhir tersebut dengan menjalankan perintah berikut:

    receive_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:receive?api-version=2023-06-01-preview
    
  2. Kirim permintaan untuk mengonsumsi peristiwa:

    curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" $receive_operation_uri
    

Mengakui peristiwa

Setelah menerima peristiwa, Anda meneruskan peristiwa tersebut ke aplikasi Anda untuk diproses. Setelah berhasil memproses peristiwa, Anda tidak lagi memerlukan peristiwa tersebut untuk berada di langganan peristiwa Anda. Untuk menginstruksikan Event Grid untuk menghapus peristiwa, Anda mengakuinya menggunakan token kunci yang Anda dapatkan pada respons operasi penerima.

  1. Pada langkah sebelumnya, Anda seharusnya menerima respons yang menyertakan brokerProperties objek dengan lockToken properti . Salin nilai token kunci dan atur pada variabel lingkungan:

    lockToken="<paste-the-lock-token-here>"
    
  2. Sekarang, bangun payload operasi pengakuan, yang menentukan token kunci untuk peristiwa yang ingin Anda akui.

    acknowledge_request_payload=' { "lockTokens": ["'$lockToken'"]} '
    
  3. Lanjutkan dengan membangun string dengan URI operasi pengakuan:

    acknowledge_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:acknowledge?api-version=2023-06-01-preview
    
  4. Terakhir, kirimkan permintaan untuk mengakui peristiwa yang diterima:

    curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" -d "$acknowledge_request_payload" $acknowledge_operation_uri
    

    Jika operasi pengakuan dijalankan sebelum token kunci kedaluwarsa (300 detik sebagaimana diatur saat kami membuat langganan peristiwa), Anda akan melihat respons seperti contoh berikut:

    {"succeededLockTokens":["CiYKJDQ4NjY5MDEyLTk1OTAtNDdENS1BODdCLUYyMDczNTYxNjcyMxISChDZae43pMpE8J8ovYMSQBZS"],"failedLockTokens":[]}
    

Langkah berikutnya

Untuk mempelajari selengkapnya tentang model pengiriman penarikan, lihat Gambaran umum pengiriman pull.