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

Azure Event Grid stöder händelsestyrda arkitekturer genom att routa händelser från källor till hanterare. Den här artikeln visar hur du konfigurerar Azure Service Bus-köer och ämnen som händelsehanterare för Event Grid-händelser. Du konfigurerar kön eller ämnet för att bearbeta händelser i företagsapplikationer genom att använda Azure-portalen, Azure CLI, Azure PowerShell eller REST API.

Förutsättningar

Service Bus-köer

Dirigera händelser i Event Grid direkt till Service Bus-köer för buffring eller kommando- och kontrollscenarier i företagsapplikationer.

Konfigurera en Service Bus-kö genom att använda Azure-portalen

I Azure-portalen, när du skapar en händelseprenumeration, välj Service Bus Queue som endpoint-typ och välj sedan Select an endpoint för att välja en Service Bus-kö.

Skärmbild av hur du konfigurerar en Service Bus-kö som händelsehanterare i Azure Event Grid.

Kommentar

Om du använder en sessionsaktiverad kö eller ämnesprenumeration som destination, ställ in sessionegenskapen på händelsen genom att använda en leveransegenskap med headernamnet SessionId.

Konfigurera en Service Bus-kö genom att 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.

Konfigurera en Service Bus-kö med 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-ämnen

Dirigera händelser i Event Grid direkt till Service Bus-ämnen för kommando- och kontrollmeddelandescenarion.

Konfigurera ett Service Bus-ämne genom att använda Azure-portalen

I Azure-portalen, när du skapar en händelseprenumeration, välj Service Bus Topic som endpoint-typ och välj sedan Select an endpoint för att välja ett Service Bus-ämne.

Skärmdump av att konfigurera ett Service Bus-ämne som en händelsehanterare i Azure Event Grid.

Konfigurera ett Service Bus-ämne genom att 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.

Konfigurera ett Service Bus-ämne genom att 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:

  • Prenumerationsvalidering
  • Meddelande
  • Borttagning av prenumeration
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 utjämnat meddelande, är messageid för det utjämnade meddelandet ett internt system-ID.

Det interna system-ID:t för meddelandet kvarstår under hela återleveransen av händelsen så att du kan undvika dubblettleveranser genom att slå på duplicuttdetektering på Service Bus-enheten. Ange varaktigheten för dubblettidentifiering för Service Bus-entiteten till antingen händelsens time-to-live (TTL) eller den maximala varaktigheten för återförsök, beroende på vilket som är längst.

Leveransegenskaper

När du använder händelseprenumerationer kan du konfigurera HTTP-huvuden som ska ingå i levererade händelser. Denna funktion stödjer att ställa in anpassade headers som destinationen kräver. Du kan ställa in egna headers på händelser som levereras till Azure Service Bus-köer och ämnen.

Azure Service Bus stöder 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. Använd till 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 där Geo-Disaster Recovery är aktiverat skickar det sekundära namnområdet inte händelser till Event Grid. Du måste manuellt lägga till Event Grid-prenumerationen för den sekundära namnrymden.

För en lista över stödda händelsehanterare, se artikeln om händelsehanterare .