Service Bus-wachtrijen en -onderwerpen configureren als gebeurtenis-handlers voor Azure Event Grid-gebeurtenissen

Azure Event Grid ondersteunt event-gedreven architecturen door gebeurtenissen van bronnen naar handlers te routeren. Dit artikel laat zien hoe je Azure Service Bus-wachtrijen en onderwerpen configureert als event handlers voor Event Grid-gebeurtenissen. Je configureert de wachtrij of het onderwerp om gebeurtenissen te verwerken in bedrijfsapplicaties door gebruik te maken van het Azure-portaal, Azure CLI, Azure PowerShell of REST API.

Prerequisites

Service Bus-wachtrijen

Routeer gebeurtenissen in Event Grid direct naar Service Bus-wachtrijen voor buffering of command-and-control-scenario's in bedrijfsapplicaties.

Configureer een Service Bus-wachtrij met behulp van het Azure-portaal

Selecteer in het Azure-portaal bij het maken van een gebeurtenisabonnement Service Bus Queue als eindpunttype en selecteer vervolgens Een eindpunt selecteren om een Service Bus-wachtrij te kiezen.

Schermopname van het configureren van een Service Bus-wachtrij als een gebeurtenis-handler in Azure Event Grid.

Notitie

Als u een wachtrij of topicabonnement waarvoor sessies zijn ingeschakeld als bestemming gebruikt, stelt u de sessie-eigenschap voor de gebeurtenis in met behulp van een leveringseigenschap met als headernaam SessionId.

Configureer een Service Bus queue door gebruik te maken van de Azure CLI

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.

Configureer een Service Bus queue door Azure PowerShell te 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

Routeer gebeurtenissen in Event Grid direct naar Service Bus-onderwerpen voor commando- en controleberichten.

Configureer een Service Bus-onderwerp door gebruik te maken van het Azure-portaal

In het Azure-portaal, terwijl je een event-abonnement aanmaakt, selecteer je Service Bus Topic als endpoint type, en selecteer vervolgens Select an endpoint om een Service Bus topic te kiezen.

Screenshot van het configureren van een Service Bus-onderwerp als event handler in Azure Event Grid.

Configureer een Service Bus-topic door gebruik te maken van de Azure CLI

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.

Configureer een Service Bus topic door gebruik te maken van Azure PowerShell

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.

Berichtkopteksten

Dit zijn de eigenschappen die u ontvangt in de berichtkoppen:

Eigenschapsnaam Beschrijving
aeg-subscription-name Naam van het gebeurtenisabonnement.
aeg-delivery-count Aantal pogingen gedaan voor de gebeurtenis.
aeg-event-type

Type van de gebeurtenis.

Dit kan een van de volgende waarden zijn:

  • Abonnementsvalidatie
  • Melding
  • Abonnement verwijderen
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 message naar een Service Bus-queue of -topic verzendt, is de messageid van het brokered message een interne systeem-ID.

De interne systeem-ID van het bericht blijft bestaan tijdens de heraflevering van het evenement, zodat je dubbele leveringen kunt voorkomen door duplicatiedetectie in te schakelen op de Service Bus-entiteit. Stel de duur van de duplicaatdetectie op de Service Bus-entiteit in op ofwel de time-to-live (TTL) van het evenement of de maximale herpogingsduur, afhankelijk van wat langer is.

Leveringseigenschappen

Wanneer je event-abonnementen gebruikt, kun je HTTP-headers instellen om in geleverde events op te nemen. Deze mogelijkheid ondersteunt het instellen van aangepaste headers die de bestemming vereist. Je kunt aangepaste headers instellen op de gebeurtenissen die aan Azure Service Bus-wachtrijen en topics worden geleverd.

Azure Service Bus ondersteunt de volgende berichteigenschappen wanneer je losse berichten verzendt.

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 dit negeren. Gebruik bijvoorbeeld data.field.
  • U kunt alleen ofwel SessionId of MessageId instellen.

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. Je moet handmatig het Event Grid-abonnement toevoegen voor de secundaire naamruimte.

Voor een lijst van ondersteunde event handlers, zie het artikel Event handlers .