Service Bus des files d’attente et des rubriques comme gestionnaires d’événements pour des événements Azure Event Grid

Un gestionnaire d’événements reçoit des événements d’une source d’événements via Event Grid et traite ces événements. Vous pouvez utiliser des instances de quelques services Azure pour gérer des événements , Azure Service Bus en fait partie. Cet article vous montre comment utiliser une file d’attente ou une rubrique Service Bus comme gestionnaire pour les événements d’Event Grid.

Files d’attente Service Bus

Vous pouvez router les événements Event Grid directement vers les files d’attente Service Bus. Cette fonctionnalité est utilisée pour les scénarios de mise en mémoire tampon ou de commande et de contrôle dans les applications d’entreprise.

Utiliser le portail Azure

Dans le portail Azure, lors de la création d’un abonnement aux événements, sélectionnez File d’attente Service Bus comme type de point de terminaison, puis cliquez sur Sélectionner un point de terminaison pour choisir une file d’attente Service Bus.

Screenshot showing the configuration of a Service Bus queue handler.

Remarque

Les files d’attente activées pour la session ne sont pas prises en charge en tant que gestionnaires d’événements pour les événements Azure Event Grid

Utiliser l’interface de ligne de commande Microsoft Azure

Utilisez la commande az eventgrid event-subscription create avec --endpoint-type défini sur servicebusqueue et --endpoint défini sur /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Voici un exemple :

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

Vous pouvez également utiliser la commande az eventgrid topic event-subscription pour les rubriques personnalisées, la commande az eventgrid system-topic event-subscription pour les rubriques système et la commande az eventgrid partner topic event-subscription create pour les rubriques partenaires.

Utilisation d'Azure PowerShell

Utilisez la commande New-AzEventGridSubscription avec -EndpointType défini sur servicebusqueue et -Endpoint défini sur /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Voici un exemple :

New-AzEventGridSubscription -ResourceGroup MyResourceGroup `
            -TopicName Topic1 `
            -EndpointType servicebusqueue `
            -Endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/queues/queue1 `
            -EventSubscriptionName EventSubscription1

Vous pouvez également utiliser la commande New-AzEventGridSystemTopicEventSubscription pour les rubriques système et la commande New-AzEventGridPartnerTopicEventSubscription pour les rubriques partenaires.

Rubriques Service Bus

Vous pouvez router les événements dans Event Grid directement dans les rubriques Service Bus pour les scénarios de messagerie de commande et de contrôle.

Utiliser le portail Azure

Dans le portail Azure, lors de la création d’un abonnement aux événements, sélectionnez Rubrique Service Bus comme type de point de terminaison, puis cliquez sur Sélectionner un point de terminaison pour choisir une rubrique Service Bus.

Screenshot showing the configuration of a Service Bus topic handler.

Utiliser l’interface de ligne de commande Microsoft Azure

Utilisez la commande az eventgrid event-subscription create avec --endpoint-type défini sur servicebustopic et --endpoint défini sur /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Voici un exemple :

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

Vous pouvez également utiliser la commande az eventgrid topic event-subscription pour les rubriques personnalisées, la commande az eventgrid system-topic event-subscription pour les rubriques système et la commande az eventgrid partner topic event-subscription create pour les rubriques partenaires.

Utilisation d'Azure PowerShell

Utilisez la commande New-AzEventGridSubscription avec -EndpointType défini sur servicebustopic et -Endpoint défini sur /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Voici un exemple :

New-AzEventGridSubscription -ResourceGroup MyResourceGroup `
            -TopicName Topic1 `
            -EndpointType servicebustopic `
            -Endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/topics/topic1 `
            -EventSubscriptionName EventSubscription1

Vous pouvez également utiliser la commande New-AzEventGridSystemTopicEventSubscription pour les rubriques système et la commande New-AzEventGridPartnerTopicEventSubscription pour les rubriques partenaires.

En-têtes de message

Les propriétés que vous recevez dans les en-têtes de message sont les suivantes :

Nom de la propriété Description
aeg-subscription-name Nom de l’abonnement aux événements.
aeg-delivery-count Nombre de tentatives effectuées pour l’événement.
aeg-event-type

Type de l’événement.

Ce peut être l’une des valeurs suivantes :

  • SubscriptionValidation
  • Notification
  • SubscriptionDeletion
aeg-metadata-version

Version de métadonnées de l’événement.

Pour un schéma d’événement Event Grid, cette propriété représente la version des métadonnées et, pour un schéma d’événements cloud, elle représente la version des spécifications.

aeg-data-version

Version de données de l’événement.

Pour un schéma d’événement Event Grid, cette propriété représente la version des données et, pour un schéma d’événements cloud, elle ne s’applique pas.

aeg-output-event-id ID de l’événement Event Grid.

Lorsque vous envoyez un événement à une file d’attente ou une rubrique Service Bus en tant que message réparti, le messageid du message réparti est un ID système interne.

L'ID système interne du message est conservé lors de la nouvelle remise de l'événement afin que vous puissiez éviter les remises en double en activant la détection des doublons sur l'entité Service Bus. Nous vous recommandons d’activer la durée de la détection des doublons sur l’entité Service Bus comme étant la durée de vie (TTL, Time-to-Live) de l’événement ou la durée maximale de nouvelle tentative, la valeur la plus longue étant retenue.

Propriétés de remise

Les abonnements aux événements vous permettent de définir des en-têtes HTTP qui sont inclus dans les événements remis. Cette fonctionnalité vous permet de définir des en-têtes personnalisés dont la destination a besoin. vous pouvez définir des en-têtes personnalisés sur les événements qui sont remis aux files d’attente et rubriques Azure Service Bus.

Azure Service Bus prend en charge l’utilisation des propriétés de message suivantes lors de l’envoi de messages uniques.

Nom de l’en-tête Type d’en-tête
MessageId dynamique
PartitionKey Statique ou dynamique
SessionId Statique ou dynamique
CorrelationId Statique ou dynamique
Label Statique ou dynamique
ReplyTo Statique ou dynamique
ReplyToSessionId Statique ou dynamique
To Statique ou dynamique
ViaPartitionKey Statique ou dynamique

Notes

  • La valeur par défaut de MessageId est l’ID interne de l’événement Event Grid. Vous pouvez la remplacer. Par exemple : data.field.
  • Vous pouvez définir uniquement SessionId ou MessageId.

Pour plus d'informations, consultez Propriétés de remise personnalisées.

Exemples REST (pour PUT)

File d’attente Service Bus

{
    "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"
	}
}

File d’attente Service Bus : remise avec une identité managée

{
	"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"
	}
}

Rubrique Service Bus

{
    "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"
	}
}

Rubrique Service Bus : remise avec une identité managée

{
    "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"
	}
}

Remarque

Lorsqu'un basculement se produit pour un espace de noms Service Bus activé par géoréplication DR, l'espace de noms secondaire n'émet pas d'événements dans Event Grid. Vous devez ajouter manuellement l'abonnement Event Grid pour l'espace de noms secondaire.

Étapes suivantes

Pour obtenir la liste des gestionnaires d’événements pris en charge, consultez l’article Gestionnaires d’événements.