Dela via


Service Bus-köer och ämnen som händelsehanterare för Azure Event Grid-händelser

En händelsehanterare tar emot händelser från en händelsekälla via Event Grid och bearbetar dessa händelser. Du kan använda instanser av några Azure-tjänster för att hantera händelser och Azure Service Bus är en av dem. Den här artikeln visar hur du använder en Service Bus-kö eller ett ämne som hanterare för händelser från Event Grid.

Service Bus-köer

Du kan dirigera händelser i Event Grid direkt till Service Bus-köer för användning i buffrings- eller kommando- och kontrollscenarier i företagsprogram.

Använda Azure-portalen

I Azure-portalen, när du skapar en händelseprenumeration, väljer du Service Bus Queue som slutpunktstyp och klickar sedan på Välj en slutpunkt för att välja en Service Bus-kö.

Skärmbild som visar konfigurationen av en Service Bus-köhanterare.

Kommentar

Sessionsaktiverade köer stöds inte som händelsehanterare för Azure Event Grid-händelser

Använda Azure CLI

az eventgrid event-subscription create Använd kommandot med --endpoint-type inställt på servicebusqueue och --endpoint inställt på /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Här är ett exempel:

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

Du kan också använda az eventgrid topic event-subscription kommandot för anpassade ämnen, az eventgrid system-topic event-subscription kommandot för systemämnen och az eventgrid partner topic event-subscription create kommandot för partnerämnen.

Använda Azure PowerShell

Använd kommandot New-AzEventGridSubscription med -EndpointType inställt på servicebusqueue och -Endpoint inställt på /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Här är ett exempel:

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

Du kan också använda New-AzEventGridSystemTopicEventSubscription kommandot för systemämnen och New-AzEventGridPartnerTopicEventSubscription kommandot för partnerämnen.

Service Bus-avsnitt

Du kan dirigera händelser i Event Grid direkt till Service Bus-ämnen för kommando- och kontrollmeddelandescenarier.

Använda Azure-portalen

I Azure-portalen, när du skapar en händelseprenumeration, väljer du Service Bus-ämne som slutpunktstyp och klickar sedan på välj en slutpunkt för att välja ett Service Bus-ämne.

Skärmbild som visar konfigurationen av en Service Bus-ämneshanterare.

Använda Azure CLI

az eventgrid event-subscription create Använd kommandot med --endpoint-type inställt på servicebustopic och --endpoint inställt på /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Här är ett exempel:

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

Du kan också använda az eventgrid topic event-subscription kommandot för anpassade ämnen, az eventgrid system-topic event-subscription kommandot för systemämnen och az eventgrid partner topic event-subscription create kommandot för partnerämnen.

Använda Azure PowerShell

Använd kommandot New-AzEventGridSubscription med -EndpointType inställt på servicebustopic och -Endpoint inställt på /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Här är ett exempel:

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

Du kan också använda New-AzEventGridSystemTopicEventSubscription kommandot för systemämnen och New-AzEventGridPartnerTopicEventSubscription kommandot för partnerämnen.

Meddelanderubriker

Det här är de egenskaper som du får i meddelanderubrikerna:

Egenskapsnamn beskrivning
aeg-subscription-name Namn på händelseprenumerationen.
aeg-delivery-count Antal försök som gjorts för händelsen.
aeg-event-type

Händelsens typ.

Det kan vara något av följande värden:

  • SubscriptionValidation
  • Meddelande
  • SubscriptionDeletion
aeg-metadata-version

Metadataversion av händelsen.

För Event Grid-händelseschema representerar den här egenskapen metadataversionen och för molnhändelseschemat representerar den specifikationsversionen.

aeg-data-version

Dataversion av händelsen.

För Event Grid-händelseschemat representerar den här egenskapen dataversionen och för molnhändelseschemat gäller den inte.

aeg-output-event-id ID för Event Grid-händelsen.

När du skickar en händelse till en Service Bus-kö eller ett ämne som ett asynkront messageid meddelande är det asynkrona meddelandet ett internt system-ID.

Det interna system-ID:t för meddelandet underhålls över omleveransen av händelsen så att du kan undvika duplicerade leveranser genom att aktivera dubblettidentifiering på Service Bus-entiteten. Vi rekommenderar att du aktiverar varaktigheten för dubblettidentifieringen på Service Bus-entiteten så att den antingen är TTL (time-to-live) för händelsen eller maximal varaktighet för återförsök, beroende på vilket som är längre.

Leveransegenskaper

Med händelseprenumerationer kan du konfigurera HTTP-huvuden som ingår i levererade händelser. Med den här funktionen kan du ange anpassade rubriker som målet kräver. Du kan ange anpassade rubriker för de händelser som levereras till Azure Service Bus-köer och -ämnen.

Azure Service Bus stöder användning av följande meddelandeegenskaper när du skickar enskilda meddelanden.

Huvudnamn Rubriktyp
MessageId Dynamisk
PartitionKey Statisk eller dynamisk
SessionId Statisk eller dynamisk
CorrelationId Statisk eller dynamisk
Label Statisk eller dynamisk
ReplyTo Statisk eller dynamisk
ReplyToSessionId Statisk eller dynamisk
To Statisk eller dynamisk
ViaPartitionKey Statisk eller dynamisk

Kommentar

  • Standardvärdet MessageId för är det interna ID:t för Event Grid-händelsen. Du kan åsidosätta den. Exempel: data.field
  • Du kan bara ange antingen SessionId eller MessageId.

Mer information finns i Anpassade leveransegenskaper.

REST-exempel (för PUT)

Service Bus-kö

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

Service Bus-kö – leverans med hanterad identitet

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

Service Bus-ämne

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

Service Bus-ämne – leverans med hanterad identitet

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

Kommentar

När en redundansväxling inträffar för ett Service Bus-namnområde som är geo-haveriberedskap aktiverat genererar inte det sekundära namnområdet händelser till Event Grid. Du måste lägga till Event Grid-prenumerationen manuellt för det sekundära namnområdet.

Nästa steg

En lista över händelsehanterare som stöds finns i artikeln Händelsehanterare .