Bagikan melalui


Panduan Cepat: Menerbitkan ke topik namespace dan menggunakan acara di Azure Event Grid

Dalam panduan cepat ini, Anda melakukan penarikan pengiriman menggunakan perintah bash shell curl untuk menerbitkan, menerima, dan mengakui peristiwa. Gunakan perintah Azure CLI untuk membuat sumber daya Azure Event Grid. Artikel ini cocok untuk pengujian cepat fungsi pengiriman pull.

Untuk kode sampel yang menggunakan SDK "data plane", lihat sumber daya berikut:

Untuk informasi selengkapnya tentang model pengiriman tarik, lihat konsep namespace Azure Event Grid dan penyerahan tarik dengan HTTP.

Jika Anda tidak memiliki akun Azure, buat akun gratis sebelum memulai.

Prasyarat

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

Membuat grup sumber daya

Buat grup sumber daya Azure dengan perintah pembuatan grupaz. Gunakan grup sumber daya ini untuk memuat semua sumber daya yang Anda buat di 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 Anda.

    resource_group="<your-resource-group-name>"
    
  2. Buat grup sumber daya. Anda dapat mengubah lokasi ke lokasi Azure mana pun.

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

Aktifkan penyedia sumber daya Event Grid

  1. Jika ini pertama kalinya Anda 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.

Buat namespace

Namespace Event Grid menyediakan titik akhir yang ditentukan pengguna tempat Anda mengirimkan peristiwa Anda. Contoh berikut membuat namespace 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. Deklarasi variabel untuk menyimpan nama namespace Event Grid Anda. Tentukan nama untuk namespace dengan mengganti <your-namespace-name> dengan nilai Anda.

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

    az eventgrid namespace create --resource-group $resource_group --name $namespace --location eastus
    

Membuat topik namespace layanan

Buat topik yang menyimpan semua acara 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 Anda.

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

    az eventgrid namespace topic create --resource-group $resource_group --name $topic --namespace-name $namespace
    

Membuat langganan peristiwa

Buat langganan acara dengan mengatur mode pengirimannya ke antrean, yang mendukung pengiriman penarikan (pull delivery). Untuk informasi selengkapnya tentang semua opsi konfigurasi, lihat REST API Azure Event Grid.

  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 Anda.

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

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

Kirimkan peristiwa ke topik Anda

Kirim contoh peristiwa ke topik namespace dengan mengikuti langkah-langkah di bagian ini.

Mencantumkan kunci akses namespace

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

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

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

Menerbitkan peristiwa

  1. Ambil nama host namespace. 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 acara Anda. Setiap JSON yang terbentuk dengan baik dapat masuk dalam bidang ini. Properti yang dapat masuk ke peristiwa juga dikenal sebagai atribut konteks. Untuk informasi selengkapnya, lihat 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 event dari Event Grid menggunakan endpoint yang mengacu pada langganan event.

  1. Buat titik akhir dengan menjalankan perintah berikut:

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

    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 acara, Anda tidak lagi memerlukan peristiwa tersebut untuk berada di langganan peristiwa Anda. Untuk menginstruksikan Event Grid untuk menghapus peristiwa, Anda mengonfirmasinya menggunakan token penguncian yang Anda dapatkan dari respons operasi penerimaan.

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

    lockToken="<paste-the-lock-token-here>"
    
  2. Buat 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 selanjutnya

Untuk mempelajari selengkapnya tentang model pengiriman pull, lihat Pengiriman Pull dengan HTTP.