Définir un emplacement de lettres mortes et une stratégie de nouvelles tentatives
Quand vous créez un abonnement aux événements, vous pouvez personnaliser les paramètres de remise des événements. Cet article vous montre comment configurer un emplacement de lettres mortes et personnaliser les paramètres de nouvelle tentative. Pour plus d’informations sur ces fonctionnalités, voir Remise et nouvelle tentative de remise de messages Event Grid.
Notes
Pour en savoir plus sur la transmission des messages, les nouvelles tentatives et les lettres mortes, consultez l’article conceptuel : Distribution et nouvelle tentative de distribution de messages avec Azure Event Grid.
Définir l’emplacement des lettres mortes
Pour définir un emplacement de lettres mortes, vous avez besoin d’un compte de stockage. Ce dernier sert à contenir les événements qui ne peuvent pas être remis à un point de terminaison. Les exemples reçoivent l'ID de ressource d'un compte de stockage existant. Ils créent un abonnement aux événements qui utilise un conteneur de ce compte de stockage pour le point de terminaison des lettres mortes.
Notes
- Créez un compte de stockage et un conteneur d’objets blob dans le stockage avant d’exécuter les commandes de cet article.
- Le service Event Grid crée des objets blob dans ce conteneur. Les noms des objets blob comportent le nom de l’abonnement Event Grid avec toutes les lettres en majuscules. Par exemple, si le nom de l’abonnement est
My-Blob-Subscription
, les noms des blocs de lettres mortes aurontMY-BLOB-SUBSCRIPTION
(myblobcontainer/MY-BLOB-SUBSCRIPTION/2019/8/8/5/111111111-1111-1111-1111-111111111111.json
). Ce comportement assure une protection contre les différences de gestion de la casse entre les services Azure. - Dans l’exemple ci-dessus,
.../2019/8/8/5/...
représente la date et l’heure non nulles (UTC) :.../YYYY/MM/DD/HH/...
. - Les blobs de lettres mortes créés contiendront un ou plusieurs événements dans un tableau, ce qui est un comportement important à prendre en compte lors du traitement des lettres mortes.
Portail Azure
Lors de la création d’un abonnement à un événement, vous pouvez activer l’inscription à l’encre morte dans l’onglet Fonctionnalités supplémentaires, comme le montre l’image suivante. Après avoir activé la fonctionnalité, spécifiez le conteneur blob qui contiendra les événements à lettres mortes et l’abonnement Azure qui dispose du stockage blob.
Vous pouvez éventuellement activer une identité managée affectée par l’utilisateur ou par le système pour les lettres mortes. L’identité managée doit être membre d’un contrôle d’accès en fonction du rôle (RBAC) qui permet d’écrire des événements dans le stockage.
Vous pouvez également activer la mise en lettres mortes et configurer les paramètres d’un abonnement existant aux événements. Dans la page Abonnement aux événements de votre abonnement aux événements, basculez vers l’onglet Fonctionnalités supplémentaires pour afficher les paramètres de lettres mortes, comme illustré dans l’image suivante.
Azure CLI
containername=testcontainer
topicid=$(az eventgrid topic show --name demoTopic -g gridResourceGroup --query id --output tsv)
storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--source-resource-id $topicid \
--name <event_subscription_name> \
--endpoint <endpoint_URL> \
--deadletter-endpoint $storageid/blobServices/default/containers/$containername
Pour désactiver les lettres mortes, réexécutez la commande pour créer l’abonnement aux événements, mais ne fournissez pas de valeur pour deadletter-endpoint
. Vous n’avez pas besoin de supprimer l’abonnement aux événements.
Notes
Si vous utilisez Azure CLI sur votre ordinateur local, utilisez Azure CLI version 2.0.56 ou supérieure. Pour des instructions sur l’installation de la version d’Azure CLI la plus récente, consultez Installer l’interface Azure CLI.
PowerShell
$containername = "testcontainer"
$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id
$storageid = (Get-AzStorageAccount -ResourceGroupName gridResourceGroup -Name demostorage).Id
New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint <endpoint_URL> `
-DeadLetterEndpoint "$storageid/blobServices/default/containers/$containername"
Pour désactiver les lettres mortes, réexécutez la commande pour créer l’abonnement aux événements, mais ne fournissez pas de valeur pour DeadLetterEndpoint
. Vous n’avez pas besoin de supprimer l’abonnement aux événements.
Notes
Si vous utilisez Azure PowerShell sur votre ordinateur local, utilisez Azure PowerShell version 1.1.0 ou supérieure. Téléchargez et installez la version la plus récente d’Azure PowerShell à partir des téléchargements Azure.
Définir une stratégie de nouvelle tentative
Au moment de créer un abonnement Event Grid, vous pouvez définir des valeurs fixant la durée pendant laquelle Event Grid doit tenter de remettre l’événement. Par défaut, Event Grid essaie pendant 24 heures (1 440 minutes) ou 30 fois. Vous pouvez définir chacune des ces valeurs pour votre abonnement Event Grid. La valeur de durée de vie d’un événement doit être un entier de 1 à 1440. La valeur du nombre maximum de nouvelles tentatives doit être un entier compris entre 1 et 30.
Vous ne pouvez pas configurer de nouvelle tentative de planification.
Portail Azure
Lors de la création d’un abonnement aux événements, vous pouvez configurer les paramètres de stratégie de nouvelles tentatives sous l’onglet Fonctionnalités supplémentaires .
Vous pouvez également configurer les paramètres de la politique de relance stratégie de nouvelles tentatives d’un abonnement à un événement existant. Dans la page Abonnement aux événements de votre abonnement aux événements, basculez vers l’onglet Fonctionnalités supplémentaires pour afficher les paramètres de la stratégie de nouvelles tentatives, comme illustré dans l’image suivante.
Azure CLI
Pour attribuer aux événements une durée de vie différente de 1 440 minutes, utilisez :
az eventgrid event-subscription create \
-g gridResourceGroup \
--topic-name <topic_name> \
--name <event_subscription_name> \
--endpoint <endpoint_URL> \
--event-ttl 720
Pour définir un nombre maximum de nouvelles tentatives différent de 30, utilisez :
az eventgrid event-subscription create \
-g gridResourceGroup \
--topic-name <topic_name> \
--name <event_subscription_name> \
--endpoint <endpoint_URL> \
--max-delivery-attempts 18
Notes
Si vous définissez event-ttl
et max-deliver-attempts
, Event Grid utilise la date de la première expiration pour déterminer quand arrêter la remise des événements. Par exemple, si vous définissez une durée de vie (TTL) de 30 minutes et 5 tentatives de remise maximum. Lorsqu’un événement n’est pas remis après 30 minutes (ou) n’est pas remis après 5 tentatives, selon la première éventualité, l’événement devient lettres mortes. Si vous définissez le nombre maximal de tentatives de remise sur 10, en ce qui concerne la planification de nouvelles tentatives exponentielles, un nombre maximal de 6 tentatives de remise se produisent avant que la durée de vie de 30 minutes soit atteinte. Par conséquent, le nombre maximal de tentatives de 10 n’a aucun impact dans ce cas et les événements sont lettre morte après 30 minutes.
PowerShell
Pour attribuer aux événements une durée de vie différente de 1 440 minutes, utilisez :
$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id
New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint <endpoint_URL> `
-EventTtl 720
Pour définir un nombre maximum de nouvelles tentatives différent de 30, utilisez :
$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id
New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint <endpoint_URL> `
-MaxDeliveryAttempt 18
Notes
Si vous définissez event-ttl
et max-deliver-attempts
, Event Grid utilise la date de la première expiration pour déterminer quand arrêter la remise des événements. Par exemple, si vous définissez une durée de vie (TTL) de 30 minutes et 5 tentatives de remise maximum. Lorsqu’un événement n’est pas remis après 30 minutes (ou) n’est pas remis après 5 tentatives, selon la première éventualité, l’événement devient lettres mortes. Si vous définissez le nombre maximal de tentatives de remise sur 10, en ce qui concerne la planification de nouvelles tentatives exponentielles, un nombre maximal de 6 tentatives de remise se produisent avant que la durée de vie de 30 minutes soit atteinte. Par conséquent, le nombre maximal de tentatives de 10 n’a aucun impact dans ce cas et les événements sont lettre morte après 30 minutes.
Étapes suivantes
- Pour un exemple d’application utilisant une application de Azure Function pour traiter des événements de lettres mortes, voir Exemples de lettres mortes Azure Event Grid pour .NET.
- Pour plus d’informations sur la remise d’événements et sur les nouvelles tentatives, consultez Remise et nouvelle tentative de remise de messages avec Azure Grid.
- Pour une présentation d’Event Grid, consultez À propos d’Event Grid.
- Pour une prise en main rapide d’Event Grid, consultez Créer et acheminer des événements personnalisés avec Azure Event Grid.