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 auront MY-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.

Capture d’écran montrant la configuration de lettres mortes d’un abonnement aux événements

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.

Capture d’écran montrant la configuration de lettres mortes d’un abonnement existant aux événements

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 .

Capture d’écran montrant la configuration de la stratégie de nouvelles tentatives d’un abonnement aux événements

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.

Capture d’écran montrant la configuration de la stratégie de nouvelles tentatives d’un abonnement existant aux événements

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