Service Bus-wachtrijen en -onderwerpen als gebeurtenis-handlers voor Azure Event Grid-gebeurtenissen
Een gebeurtenis-handler ontvangt gebeurtenissen van een gebeurtenisbron via Event Grid en verwerkt deze gebeurtenissen. U kunt exemplaren van een paar Azure-services gebruiken om gebeurtenissen af te handelen en Azure Service Bus is een van deze services. In dit artikel leest u hoe u een Service Bus-wachtrij of -onderwerp gebruikt als handler voor gebeurtenissen uit Event Grid.
Service Bus-wachtrijen
U kunt gebeurtenissen in Event Grid rechtstreeks routeren naar Service Bus-wachtrijen voor gebruik in buffering of opdracht- en controlescenario's in bedrijfstoepassingen.
Azure Portal gebruiken
Selecteer in Azure Portal tijdens het maken van een gebeurtenisabonnement De Service Bus-wachtrij als het eindpunttype en klik vervolgens op een eindpunt om een Service Bus-wachtrij te kiezen.
Notitie
Wachtrijen waarvoor sessies zijn ingeschakeld, worden niet ondersteund als gebeurtenis-handlers voor Azure Event Grid-gebeurtenissen
Azure CLI gebruiken
Gebruik de az eventgrid event-subscription create
opdracht met --endpoint-type
ingesteld op servicebusqueue
en --endpoint
ingesteld op /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>
. Hier volgt een voorbeeld:
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
U kunt ook de az eventgrid topic event-subscription
opdracht gebruiken voor aangepaste onderwerpen, de az eventgrid system-topic event-subscription
opdracht voor systeemonderwerpen en de az eventgrid partner topic event-subscription create
opdracht voor partneronderwerpen.
Azure PowerShell gebruiken
Gebruik de opdracht New-AzEventGridSubscription met -EndpointType
ingesteld op servicebusqueue
en -Endpoint
ingesteld op /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>
. Hier volgt een voorbeeld:
New-AzEventGridSubscription -ResourceGroup MyResourceGroup `
-TopicName Topic1 `
-EndpointType servicebusqueue `
-Endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/queues/queue1 `
-EventSubscriptionName EventSubscription1
U kunt ook de New-AzEventGridSystemTopicEventSubscription
opdracht voor systeemonderwerpen en de New-AzEventGridPartnerTopicEventSubscription
opdracht voor partneronderwerpen gebruiken.
Service Bus-onderwerpen
U kunt gebeurtenissen in Event Grid rechtstreeks routeren naar Service Bus-onderwerpen voor opdracht- en controleberichtenscenario's.
Azure Portal gebruiken
Selecteer Service Bus-onderwerp als eindpunttype in de Azure-portal en klik vervolgens op een eindpunt om een Service Bus-onderwerp te kiezen.
Azure CLI gebruiken
Gebruik de az eventgrid event-subscription create
opdracht met --endpoint-type
ingesteld op servicebustopic
en --endpoint
ingesteld op /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>
. Hier volgt een voorbeeld:
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
U kunt ook de az eventgrid topic event-subscription
opdracht gebruiken voor aangepaste onderwerpen, de az eventgrid system-topic event-subscription
opdracht voor systeemonderwerpen en de az eventgrid partner topic event-subscription create
opdracht voor partneronderwerpen.
Azure PowerShell gebruiken
Gebruik de opdracht New-AzEventGridSubscription met -EndpointType
ingesteld op servicebustopic
en -Endpoint
ingesteld op /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>
. Hier volgt een voorbeeld:
New-AzEventGridSubscription -ResourceGroup MyResourceGroup `
-TopicName Topic1 `
-EndpointType servicebustopic `
-Endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/topics/topic1 `
-EventSubscriptionName EventSubscription1
U kunt ook de New-AzEventGridSystemTopicEventSubscription
opdracht voor systeemonderwerpen en de New-AzEventGridPartnerTopicEventSubscription
opdracht voor partneronderwerpen gebruiken.
Berichtkoppen
Dit zijn de eigenschappen die u ontvangt in de berichtkoppen:
Eigenschapsnaam | Beschrijving |
---|---|
aeg-subscription-name | Naam van het gebeurtenisabonnement. |
aeg-delivery-count | Aantal pogingen voor de gebeurtenis. |
aeg-event-type | Type van de gebeurtenis. Dit kan een van de volgende waarden zijn:
|
aeg-metadata-version | Metagegevensversie van de gebeurtenis. Voor event grid-gebeurtenisschema vertegenwoordigt deze eigenschap de metagegevensversie en voor het cloud-gebeurtenisschema, het vertegenwoordigt de specificatieversie. |
aeg-data-version | Gegevensversie van de gebeurtenis. Voor Event Grid-gebeurtenisschema vertegenwoordigt deze eigenschap de gegevensversie en voor het cloud-gebeurtenisschema is deze niet van toepassing. |
aeg-output-event-id | Id van de Event Grid-gebeurtenis. |
Wanneer u een gebeurtenis als brokered bericht naar een Service Bus-wachtrij of -onderwerp verzendt, is het messageid
bericht een interne systeem-id.
De interne systeem-id voor het bericht blijft behouden tijdens het opnieuw leveren van de gebeurtenis, zodat u dubbele leveringen kunt voorkomen door dubbele detectie in te schakelen op de service bus-entiteit. U wordt aangeraden de duur van de dubbele detectie op de Service Bus-entiteit in te schakelen als de time-to-live (TTL) van de gebeurtenis of de maximale duur van nieuwe pogingen, afhankelijk van wat langer is.
Leveringseigenschappen
Met gebeurtenisabonnementen kunt u HTTP-headers instellen die zijn opgenomen in bezorgde gebeurtenissen. Met deze mogelijkheid kunt u aangepaste headers instellen die nodig zijn voor de bestemming. U kunt aangepaste headers instellen voor de gebeurtenissen die worden geleverd aan Azure Service Bus-wachtrijen en onderwerpen.
Azure Service Bus ondersteunt het gebruik van de volgende berichteigenschappen bij het verzenden van één bericht.
Headernaam | Kopteksttype |
---|---|
MessageId |
Dynamisch |
PartitionKey |
Statisch of dynamisch |
SessionId |
Statisch of dynamisch |
CorrelationId |
Statisch of dynamisch |
Label |
Statisch of dynamisch |
ReplyTo |
Statisch of dynamisch |
ReplyToSessionId |
Statisch of dynamisch |
To |
Statisch of dynamisch |
ViaPartitionKey |
Statisch of dynamisch |
Notitie
- De standaardwaarde is
MessageId
de interne id van de Event Grid-gebeurtenis. U kunt het overschrijven. Bijvoorbeeld:data.field
. - U kunt alleen instellen
SessionId
ofMessageId
.
Zie Aangepaste leveringseigenschappen voor meer informatie.
REST-voorbeelden (voor PUT)
Service Bus-wachtrij
{
"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-wachtrij - levering met beheerde identiteit
{
"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-onderwerp
{
"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-onderwerp - levering met beheerde identiteit
{
"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"
}
}
Notitie
Wanneer een failover plaatsvindt voor een Service Bus-naamruimte waarvoor Geo-Disaster Recovery is ingeschakeld, verzendt de secundaire naamruimte geen gebeurtenissen naar Event Grid. U moet het Event Grid-abonnement handmatig toevoegen voor de secundaire naamruimte.
Volgende stappen
Zie het artikel Gebeurtenis-handlers voor een lijst met ondersteunde gebeurtenis-handlers.