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ö.
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.
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:
|
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
ellerMessageId
.
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 .