Configurer des files d’attente et des rubriques Service Bus en tant que gestionnaires d’événements pour les événements Azure Event Grid

Azure Event Grid prend en charge les architectures pilotées par événements en acheminant les événements des sources vers les gestionnaires. Cet article explique comment configurer les files d’attente et les rubriques Azure Service Bus comme gestionnaires pour les événements Event Grid. Vous configurez la file d’attente ou la rubrique pour traiter les événements dans des applications d’entreprise en utilisant le portail Azure, Azure CLI, Azure PowerShell ou l’API REST.

Prerequisites

Files d’attente Service Bus

Acheminer directement les événements dans Event Grid vers les files d’attente Service Bus pour la mise en mémoire tampon ou les scénarios de commande et de contrôle dans les applications d’entreprise.

Configurez une file d’attente Service Bus en utilisant le portail Azure

Dans le portail Azure, lors de la création d’un abonnement à un événement, sélectionnez Service Bus Queue comme type de terminaison, puis sélectionnez Sélectionner un point de terminaison pour choisir une file Service Bus.

Capture d’écran de la configuration d’une file d’attente Service Bus en tant que gestionnaire d’événements dans Azure Event Grid.

Remarque

Si vous utilisez comme destination une file d’attente ou un abonnement à une rubrique avec prise en charge des sessions, définissez la propriété de session sur l’événement à l’aide d’une propriété de distribution dont le nom d’en-tête est SessionId.

Configurez une file d’attente Service Bus en utilisant la ligne de commande Azure CLI

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.

Configurez une file d’attente Service Bus en utilisant 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 de Service Bus

Acheminez les événements dans Event Grid directement vers les sujets du Service Bus pour les scénarios de messagerie de commande et de contrôle.

Configurez un sujet Service Bus en utilisant le portail Azure

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

Capture d’écran de la configuration d’un sujet Service Bus en tant que gestionnaire d’événements dans Azure Event Grid.

Configurez un sujet Service Bus en utilisant l’interface Azure CLI

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.

Configurez un sujet Service Bus en utilisant 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 :

  • Validation de l’abonnement
  • Notification
  • Suppression de l’abonnement
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’identifiant système interne du message persiste lors de la relivraison de l’événement afin que vous puissiez éviter les livraisons dupliquées en activant la détection de doublons sur l’entité Service Bus. Définissez la durée de détection des doublons pour l’entité Service Bus sur la durée de vie (TTL) de l’événement ou sur la durée maximale de nouvelle tentative, selon la plus longue des deux.

Propriétés de livraison

Lorsque vous utilisez des abonnements à des événements, vous pouvez configurer des en-têtes HTTP à inclure dans les événements livrés. Cette fonctionnalité permet de définir des en-têtes personnalisés selon les besoins de la destination. Vous pouvez définir des en-têtes personnalisés pour les événements distribués aux files d’attente et aux rubriques Azure Service Bus.

Azure Service Bus prend en charge les propriétés de message suivantes lorsque vous envoyez des 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

Remarque

  • La valeur par défaut de MessageId est l’ID interne de l’événement Event Grid. Vous pouvez la remplacer. Par exemple, utilisez 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 - distribution 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 : distribution avec l’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 avec la géo-reprise d’activité après sinistre activée, l’espace de noms secondaire n’émet pas d’événements vers Event Grid. Vous devez ajouter manuellement l’abonnement Event Grid pour l’espace de noms secondaire.

Pour une liste des gestionnaires d’événements pris en charge, voir l’article Gestionnaires d’événements .