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.

Screenshot showing the configuration of a Service Bus queue handler.

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.

Screenshot showing the configuration of a Service Bus topic handler.

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:

  • SubscriptionValidation
  • Melding
  • SubscriptionDeletion
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 of MessageId.

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-DR 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.