Bagikan melalui


Antrean dan topik Service Bus sebagai event handler untuk acara Azure Event Grid

Penanganan aktivitas menerima peristiwa dari sumber peristiwa melalui Event Grid, dan memproses peristiwa tersebut. Anda dapat menggunakan instans beberapa layanan Azure untuk menangani peristiwa dan Azure Bus Layanan adalah salah satunya. Artikel ini memperlihatkan kepada Anda cara menggunakan antrean atau topik Bus Layanan sebagai handler untuk peristiwa dari Event Grid.

Antrean Microsoft Azure Service Bus

Anda dapat merutekan peristiwa di Event Grid langsung ke antrean Bus Layanan untuk digunakan dalam buffering atau skenario perintah dan kontrol dalam aplikasi perusahaan.

Menggunakan portal Microsoft Azure

Di portal Azure, saat membuat langganan peristiwa, pilih antrean Bus Layanan sebagai jenis titik akhir lalu klik pilih titik akhir untuk memilih antrean Bus Layanan.

Cuplikan layar memperlihatkan konfigurasi handler antrean Bus Layanan.

Catatan

Jika Anda menggunakan langganan antrean/topik yang diaktifkan sesi sebagai tujuan, Anda perlu mengatur properti sesi pada peristiwa menggunakan Properti Pengiriman dengan nama header 'SessionId'.

Gunakan Azure CLI

az eventgrid event-subscription create Gunakan perintah dengan --endpoint-type diatur ke servicebusqueue dan --endpoint atur ke /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Berikut contohnya:

az eventgrid event-subscription create \
    --name <my-event-subscription> \
    --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.EventGrid/topics/topic1 \
    --endpoint-type servicebusqueue \
    --endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/queues/queue1

Anda juga dapat menggunakan az eventgrid topic event-subscription perintah untuk topik kustom, az eventgrid system-topic event-subscription perintah untuk topik sistem, dan az eventgrid partner topic event-subscription create perintah untuk topik mitra.

Menggunakan Azure PowerShell

Gunakan perintah New-AzEventGridSubscription dengan -EndpointType diatur ke servicebusqueue dan -Endpoint diatur ke /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Berikut contohnya:

New-AzEventGridSubscription -ResourceGroup MyResourceGroup `
            -TopicName Topic1 `
            -EndpointType servicebusqueue `
            -Endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/queues/queue1 `
            -EventSubscriptionName EventSubscription1

Anda juga dapat menggunakan New-AzEventGridSystemTopicEventSubscription perintah untuk topik sistem, dan New-AzEventGridPartnerTopicEventSubscription perintah untuk topik mitra.

Topik Microsoft Azure Service Bus

Anda dapat merutekan peristiwa di Event Grid langsung ke topik Bus Layanan untuk skenario pesan perintah dan kontrol.

Menggunakan portal Microsoft Azure

Di portal Azure, saat membuat langganan peristiwa, pilih Bus Layanan Topik sebagai jenis titik akhir lalu klik pilih titik akhir untuk memilih topik Bus Layanan.

Cuplikan layar memperlihatkan konfigurasi handler topik Bus Layanan.

Gunakan Azure CLI

az eventgrid event-subscription create Gunakan perintah dengan --endpoint-type diatur ke servicebustopic dan --endpoint atur ke /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Berikut contohnya:

az eventgrid event-subscription create \
    --name <my-event-subscription> \
    --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.EventGrid/topics/topic1 \
    --endpoint-type servicebustopic \
    --endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/topics/topic1

Anda juga dapat menggunakan az eventgrid topic event-subscription perintah untuk topik kustom, az eventgrid system-topic event-subscription perintah untuk topik sistem, dan az eventgrid partner topic event-subscription create perintah untuk topik mitra.

Menggunakan Azure PowerShell

Gunakan perintah New-AzEventGridSubscription dengan -EndpointType diatur ke servicebustopic dan -Endpoint diatur ke /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Berikut contohnya:

New-AzEventGridSubscription -ResourceGroup MyResourceGroup `
            -TopicName Topic1 `
            -EndpointType servicebustopic `
            -Endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/topics/topic1 `
            -EventSubscriptionName EventSubscription1

Anda juga dapat menggunakan New-AzEventGridSystemTopicEventSubscription perintah untuk topik sistem, dan New-AzEventGridPartnerTopicEventSubscription perintah untuk topik mitra.

Header pesan

Ini adalah properti yang Anda terima di header pesan:

Nama properti Deskripsi
aeg-subscription-name Nama langganan kejadian.
aeg-delivery-count Jumlah upaya yang dilakukan untuk kejadian.
aeg-event-type

Jenis kejadian.

Jenis dapat berupa salah satu dari nilai berikut:

  • SubscriptionValidation
  • Pemberitahuan
  • SubscriptionDeletion
aeg-metadata-version

Versi metadata kejadian.

Untuk Skema kejadian Azure Event Grid, properti ini mewakili versi metadata dan untuk skema kejadian cloud, properti ini mewakili versi spesifikasi.

aeg-data-version

Versi data kejadian.

Untuk Skema kejadian Azure Event Grid, properti ini mewakili versi data dan untuk skema kejadian cloud, tidak berlaku.

aeg-output-event-id ID kejadian Azure Event Grid.

Saat Anda mengirim peristiwa ke antrean atau topik Bus Layanan sebagai pesan broker, messageid pesan broker adalah ID sistem internal.

ID sistem internal untuk pesan dipertahankan di seluruh redelivasi peristiwa sehingga Anda dapat menghindari pengiriman duplikat dengan mengaktifkan deteksi duplikat pada entitas bus layanan. Kami menyarankan agar Anda mengaktifkan durasi deteksi duplikat pada entitas Microsoft Azure Service Bus untuk menjadi time-to-live (TTL) dari durasi peristiwa atau coba lagi maksimal, mana yang lebih lama.

Properti pengiriman

Langganan kejadian memungkinkan Anda menyiapkan header HTTP yang disertakan dalam kejadian terkikis. Kemampuan ini memungkinkan Anda mengatur header kustom yang diperlukan tujuan. Anda dapat mengatur header kustom pada peristiwa yang dikirimkan ke antrean dan topik Azure Service Bus.

Azure Service Bus mendukung penggunaan properti pesan berikut saat mengirim pesan tunggal.

Nama header Jenis header
MessageId Dinamis
PartitionKey Statis atau dinamis
SessionId Statis atau dinamis
CorrelationId Statis atau dinamis
Label Statis atau dinamis
ReplyTo Statis atau dinamis
ReplyToSessionId Statis atau dinamis
To Statis atau dinamis
ViaPartitionKey Statis atau dinamis

Catatan

  • Nilai default MessageId adalah ID internal dari acara Event Grid. Anda dapat mengambil alih. Contohnya,data.field.
  • Anda hanya dapat mengatur salah satu SessionId atau MessageId.

Untuk informasi selengkapnya, lihat Properti pengiriman kustom.

Contoh REST (untuk PUT)

Antrean Microsoft Azure Service Bus

{
    "properties": 
    {
        "destination": 
        {
			"endpointType": "ServiceBusQueue",
            "properties": 
            {
				"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<SERVICE BUS NAMESPACE NAME>/queues/<SERVICE BUS QUEUE NAME>"
			}
		},
		"eventDeliverySchema": "EventGridSchema"
	}
}

Antrean Service Bus - pengiriman dengan identitas terkelola

{
	"properties": {
        "deliveryWithResourceIdentity": 
        {
            "identity": 
            {
				"type": "SystemAssigned"
			},
            "destination": 
            {
				"endpointType": "ServiceBusQueue",
                "properties": 
                {
					"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<SERVICE BUS NAMESPACE NAME>/queues/<SERVICE BUS QUEUE NAME>"
				}
			}
		},
		"eventDeliverySchema": "EventGridSchema"
	}
}

Topik Service Bus

{
    "properties": 
    {
        "destination": 
        {
			"endpointType": "ServiceBusTopic",
            "properties": 
            {
				"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<SERVICE BUS NAMESPACE NAME>/topics/<SERVICE BUS TOPIC NAME>"
			}
		},
		"eventDeliverySchema": "EventGridSchema"
	}
}

Topic Service Bus - pengiriman dengan identitas terkelola

{
    "properties": 
    {
        "deliveryWithResourceIdentity": 
        {
            "identity": 
            {
				"type": "SystemAssigned"
			},
            "destination": 
            {
				"endpointType": "ServiceBusTopic",
                "properties": 
                {
					"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<SERVICE BUS NAMESPACE NAME>/topics/<SERVICE BUS TOPIC NAME>"
				}
			}
		},
		"eventDeliverySchema": "EventGridSchema"
	}
}

Catatan

Saat failover terjadi untuk namespace Bus Layanan yang diaktifkan Pemulihan Bencana Geografis, namespace layanan sekunder tidak memancarkan peristiwa ke Event Grid. Anda perlu menambahkan langganan Event Grid secara manual untuk namespace layanan sekunder.

Langkah berikutnya

Lihat artikel Event handler untuk mengetahui daftar event handler yang didukung.