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.
Remarque
Si vous utilisez l’abonnement à une file d’attente ou à une rubrique activée par la session comme destination, vous devez définir la propriété de session sur l’événement à l’aide de la propriété Delivery avec le nom d’en-tête « SessionId ».
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.
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 :
|
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
ouMessageId
.
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 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.
Étapes suivantes
Pour obtenir la liste des gestionnaires d’événements pris en charge, consultez l’article Gestionnaires d’événements.