Bagikan melalui


Atur lokasi surat mati dan kebijakan percobaan kembali

Saat membuat langganan peristiwa, Anda bisa menyesuaikan pengaturan untuk pengiriman peristiwa. Artikel ini menjelaskan cara menyiapkan lokasi surat mati dan menyesuaikan pengaturan coba lagi. Untuk informasi tentang fitur ini, lihat Percobaan kembali dan pengiriman pesan Event Grid.

Catatan

Untuk mempelajari pengiriman pesan, percobaan kembali, dan surat mati, lihat artikel konseptual: Percobaan kembali dan pengiriman pesan Event Grid.

Mengatur lokasi surat mati

Untuk mengatur lokasi surat mati, Anda memerlukan akun penyimpanan untuk menyimpan peristiwa yang tidak dapat dikirim ke titik akhir. Contoh ini mendapatkan ID sumber daya dari akun penyimpanan yang ada. Contoh tersebut membuat langganan peristiwa yang menggunakan kontainer di akun penyimpanan tersebut untuk titik akhir surat mati.

Anda perlu membuat akun penyimpanan dan kontainer blob di penyimpanan sebelum menjalankan perintah di artikel ini. Event Grid membuat blob dalam kontainer ini. Nama blob berisi nama langganan Event Grid dengan semua huruf dalam huruf besar. Misalnya, jika nama langganan adalah My-Blob-Subscription, nama blob surat mati berisi MY-BLOB-SUBSCRIPTION (myblobcontainer/MY-BLOB-SUBSCRIPTION/2019/8/8/5/111111111-1111-1111-1111-111111111111.json). Perilaku ini bertujuan untuk melindungi dari perbedaan dalam penanganan kasus antara layanan Azure. Dalam contoh, .../2019/8/8/5/... mewakili tanggal dan jam nonzero padded (UTC): .../YYYY/MM/DD/HH/....'. Blob huruf mati yang dibuat berisi satu atau beberapa peristiwa dalam array, yang merupakan perilaku penting yang perlu dipertimbangkan saat memproses huruf mati.

Portal Azure

Saat membuat langganan peristiwa, Anda dapat mengaktifkan dead-lettering pada tab Fitur tambahan seperti yang ditunjukkan pada gambar berikut. Setelah Anda mengaktifkan fitur, tentukan kontainer blob yang menyimpan peristiwa surat gagal dan langganan Azure yang memiliki penyimpanan blob.

Anda dapat secara opsional mengaktifkan identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna untuk dead-lettering. Identitas terkelola harus menjadi anggota peran kontrol akses berbasis peran (RBAC) yang memungkinkan penulisan peristiwa ke penyimpanan.

Cuplikan layar memperlihatkan konfigurasi dead-letter langganan peristiwa.

Anda juga dapat mengaktifkan dead-lettering dan mengonfigurasi pengaturan untuk langganan peristiwa yang ada. Pada halaman Langganan Peristiwa langganan peristiwa Anda, beralihlah ke tab Fitur tambahan untuk melihat pengaturan dead-letter seperti yang ditunjukkan pada gambar berikut.

Cuplikan layar memperlihatkan konfigurasi dead-letter dari langganan peristiwa yang ada.

Azure CLI

containername=testcontainer

topicid=$(az eventgrid topic show --name demoTopic -g gridResourceGroup --query id --output tsv)
storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name <event_subscription_name> \
  --endpoint <endpoint_URL> \
  --deadletter-endpoint $storageid/blobServices/default/containers/$containername

Untuk menonaktifkan surat mati, jalankan ulang perintah untuk membuat langganan peristiwa tetapi tidak menyediakan nilai untuk deadletter-endpoint. Anda tidak perlu menghapus langganan peristiwa.

Catatan

Jika Anda menggunakan Azure CLI di komputer lokal Anda, gunakan Azure CLI versi 2.0.56 atau yang lebih tinggi. Untuk petunjuk tentang cara menginstal Azure CLI versi terbaru, lihat Menginstal Azure CLI.

PowerShell

$containername = "testcontainer"

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id
$storageid = (Get-AzStorageAccount -ResourceGroupName gridResourceGroup -Name demostorage).Id

New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint <endpoint_URL> `
  -DeadLetterEndpoint "$storageid/blobServices/default/containers/$containername"

Untuk menonaktifkan surat mati, jalankan ulang perintah untuk membuat langganan peristiwa tetapi tidak menyediakan nilai untuk DeadLetterEndpoint. Anda tidak perlu menghapus langganan peristiwa.

Catatan

Jika Anda menggunakan Azure PowerShell di komputer lokal Anda, gunakan Azure PowerShell versi 1.1.0 atau yang lebih tinggi. Unduh dan instal Azure PowerShell versi terbaru dari unduhan Azure.

Mengatur kebijakan percobaan kembali

Saat membuat langganan Event Grid, Anda dapat mengatur nilai durasi Event Grid akan mencoba lagi pengiriman peristiwa. Secara default, Event Grid mencoba selama 24 jam (1.440 menit), atau 30 kali. Anda dapat mengatur salah satu nilai ini untuk langganan Event Grid Anda. Nilai untuk TTL peristiwa harus berupa bilangan bulat dari 1 hingga 1440. Nilai untuk percobaan kembali maksimal harus berupa bilangan bulat dari 1 hingga 30.

Anda tidak dapat mengonfigurasi jadwal coba lagi.

Portal Azure

Saat membuat langganan peristiwa, Anda dapat mengonfigurasi pengaturan kebijakan coba lagi pada tab Fitur tambahan.

Cuplikan layar memperlihatkan konfigurasi kebijakan percobaan kembali langganan peristiwa.

Anda juga dapat mengonfigurasi pengaturan kebijakan coba lagi untuk langganan peristiwa yang ada. Pada halaman Langganan Peristiwa langganan peristiwa Anda, beralihlah ke tab Fitur tambahan untuk melihat pengaturan kebijakan coba lagi seperti yang ditunjukkan pada gambar berikut.

Cuplikan layar memperlihatkan konfigurasi kebijakan coba lagi dari langganan peristiwa yang ada.

Azure CLI

Untuk mengatur TTL peristiwa ke nilai selain 1440 menit, gunakan:

az eventgrid event-subscription create \
  -g gridResourceGroup \
  --topic-name <topic_name> \
  --name <event_subscription_name> \
  --endpoint <endpoint_URL> \
  --event-ttl 720

Untuk mengatur coba lagi maks ke nilai selain 30, gunakan:

az eventgrid event-subscription create \
  -g gridResourceGroup \
  --topic-name <topic_name> \
  --name <event_subscription_name> \
  --endpoint <endpoint_URL> \
  --max-delivery-attempts 18

Catatan

Jika Anda mengatur event-ttl dan max-deliver-attempts, Event Grid menggunakan yang pertama yang kedaluwarsa guna menentukan kapan harus menghentikan pengiriman peristiwa. Misalnya, jika Anda menetapkan 30 menit sebagai time-to-live (TTL) dan 5 upaya pengiriman maks. Ketika peristiwa tidak dikirimkan setelah 30 menit (atau) tidak dikirimkan setelah lima upaya, mana pun yang terjadi terlebih dahulu, peristiwa akan dihentikan. Jika Anda menetapkan upaya pengiriman maks ke 10, sehubungan dengan jadwal percobaan ulang eksponensial, maksimal enam jumlah upaya pengiriman terjadi sebelum 30 menit TTL akan tercapai, oleh karena itu menetapkan jumlah maksimum upaya ke 10 tidak akan berdampak dalam kasus ini dan peristiwa akan di-dead-letter setelah 30 menit.

PowerShell

Untuk mengatur TTL peristiwa ke nilai selain 1440 menit, gunakan:

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id

New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint <endpoint_URL> `
  -EventTtl 720

Untuk mengatur coba lagi maks ke nilai selain 30, gunakan:

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id

New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint <endpoint_URL> `
  -MaxDeliveryAttempt 18

Catatan

Jika Anda mengatur event-ttl dan max-deliver-attempts, Event Grid menggunakan yang pertama yang kedaluwarsa guna menentukan kapan harus menghentikan pengiriman peristiwa. Misalnya, jika Anda menetapkan 30 menit sebagai time-to-live (TTL) dan 5 upaya pengiriman maks. Ketika peristiwa tidak dikirimkan setelah 30 menit (atau) tidak dikirimkan setelah lima upaya, mana pun yang terjadi terlebih dahulu, peristiwa akan dihentikan. Jika Anda menetapkan upaya pengiriman maks ke 10, sehubungan dengan jadwal percobaan ulang eksponensial, maksimal enam jumlah upaya pengiriman terjadi sebelum 30 menit TTL akan tercapai, oleh karena itu menetapkan jumlah maksimum upaya ke 10 tidak akan berdampak dalam kasus ini dan peristiwa akan di-dead-letter setelah 30 menit.