Establecimiento de una ubicación para los eventos fallidos y de una directiva de reintentos
Cuando crea una suscripción a eventos, puede personalizar la configuración de entrega de estos. Este artículo muestra cómo configurar una ubicación de la cola de mensajes fallidos y personalizar la configuración de reintentos. Para obtener información acerca de estas características, consulte Entrega y reintento de entrega de mensajes de Event Grid.
Nota
Para obtener información sobre la entrega de mensajes, los reintentos y la cola de mensajes fallidos, consulte el artículo conceptual: Entrega y reintento de entrega de mensajes de Event Grid
Establecimiento de una ubicación para los eventos fallidos
Para establecer una ubicación de la cola de mensajes fallidos, se necesita una cuenta de almacenamiento para mantener los eventos que no se pueden entregar a un punto de conexión. Los ejemplos obtienen el identificador de recurso de una cuenta de almacenamiento existente. Crean una suscripción de eventos que usa un contenedor en esa cuenta de almacenamiento para el punto de conexión de mensajes con problemas de entrega.
Para poder ejecutar los comandos de este artículo, es preciso crear previamente una cuenta de almacenamiento y un contenedor de blobs en el almacenamiento. Event Grid crea blobs en este contenedor. Los nombres de los blobs contienen el nombre de la suscripción a Event Grid con todas las letras en mayúsculas. Por ejemplo, si el nombre de la suscripción es My-Blob-Subscription
, los nombres de los blobs de mensajes fallidos contienen MY-BLOB-SUBSCRIPTION
(myblobcontainer/MY-BLOB-SUBSCRIPTION/2019/8/8/5/111111111-1111-1111-1111-111111111111.json
). Este comportamiento sirve para proteger contra las diferencias en el control de las mayúsculas y minúsculas entre servicios de Azure. En el ejemplo, .../2019/8/8/5/...
representa la fecha y la hora (UTC) sin ceros de relleno: .../YYYY/MM/DD/HH/...
. Los blobs de mensajes fallidos creados contienen uno o varios eventos en una matriz, que es un comportamiento importante que debe tenerse en cuenta al procesar mensajes fallidos.
Azure portal
Al crear una suscripción de eventos, puede habilitar la puesta en cola de los mensajes fallidos en la pestaña Características adicionales, como se muestra en la siguiente imagen. Después de habilitar la característica, especifique el contenedor de blobs que contiene eventos con mensajes fallidos y la suscripción de Azure que tiene el almacenamiento de blobs.
Opcionalmente, puede habilitar una identidad administrada asignada por el sistema o por el usuario para la puesta en cola de los mensajes fallidos. La identidad administrada debe ser miembro de un rol de control de acceso basado en rol (RBAC) que permita escribir eventos en el almacenamiento.
También puede habilitar la puesta en cola de mensajes fallidos y definir la configuración de una suscripción a un evento que ya existía. En la página Suscripción de eventos de su suscripción a un evento, cambie a la pestaña Características adicionales para ver la configuración de mensajes fallidos, como se muestra en la siguiente imagen.
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
Para desactivar las colas de mensajes fallidos, vuelva a ejecutar el comando para crear la suscripción de eventos, pero no proporcione un valor para deadletter-endpoint
. No es necesario eliminar la suscripción de eventos.
Nota:
Si usa la CLI de Azure en la máquina local, utilice la versión 2.0.56 o cualquier versión superior. Para instrucciones sobre cómo instalar la versión más reciente de la CLI de Azure, consulte Instalación de la CLI de Azure.
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"
Para desactivar las colas de mensajes fallidos, vuelva a ejecutar el comando para crear la suscripción de eventos, pero no proporcione un valor para DeadLetterEndpoint
. No es necesario eliminar la suscripción de eventos.
Nota:
Si usa Azure PowerShell en la máquina local, utilice la versión 1.1.0 o cualquier versión superior. Descargue e instale la última versión de Azure PowerShell desde las descargas de Azure.
Establecimiento de la directiva de reintentos
Al crear una suscripción a Event Grid, puede establecer durante cuanto tiempo debe intentar Event Grid entregar el evento. De manera predeterminada, Event Grid lo intenta durante 24 horas (1440 minutos) o 30 veces. Puede establecer cualquiera de estos valores para una suscripción de Event Grid. El valor del período de vida del evento debe ser un entero entre 1 y 1440. El valor de reintentos máximos debe ser un entero entre 1 y 30.
No se puede configurar la programación de reintentos.
Portal de Azure
Al crear una suscripción a un evento, puede configurar las opciones de directiva de reintentos en la pestaña Características adicionales.
También puede configurar la directiva de reintentos para una suscripción a un evento que ya existía. En la página Suscripción de eventos de su suscripción a un evento, cambie a la pestaña Características adicionales para ver la configuración de la directiva de reintentos, como se muestra en la siguiente imagen.
Azure CLI
Para establecer el período de vida del evento en otro valor distinto de 1440 minutos, use:
az eventgrid event-subscription create \
-g gridResourceGroup \
--topic-name <topic_name> \
--name <event_subscription_name> \
--endpoint <endpoint_URL> \
--event-ttl 720
Para establecer el número máximo de reintentos en otro valor distinto a 30, use:
az eventgrid event-subscription create \
-g gridResourceGroup \
--topic-name <topic_name> \
--name <event_subscription_name> \
--endpoint <endpoint_URL> \
--max-delivery-attempts 18
Nota
Si establece event-ttl
y max-deliver-attempts
, Event Grid usa la primera opción más próxima a la expiración para determinar cuándo se debe detener la entrega de eventos. Por ejemplo, si establece 30 minutos como período de vida (TTL) y 5 intentos de entrega máximos. Si un evento no se entrega antes de 30 minutos o después de cinco intentos, lo que ocurra primero, se pone en la cola de mensajes fallidos. Si establece el número máximo de intentos de entrega en diez, con respecto a la programación exponencial de reintentos, el número máximo de seis intentos de entrega ocurrirá antes de que se alcance el TTL de 30 minutos; por lo tanto, establecer el número máximo de intentos en diez no tendrá ningún impacto en este caso y los eventos serán fallidos a los 30 minutos.
PowerShell
Para establecer el período de vida del evento en otro valor distinto de 1440 minutos, use:
$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id
New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint <endpoint_URL> `
-EventTtl 720
Para establecer el número máximo de reintentos en otro valor distinto a 30, use:
$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id
New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint <endpoint_URL> `
-MaxDeliveryAttempt 18
Nota
Si establece event-ttl
y max-deliver-attempts
, Event Grid usa la primera opción más próxima a la expiración para determinar cuándo se debe detener la entrega de eventos. Por ejemplo, si establece 30 minutos como período de vida (TTL) y 5 intentos de entrega máximos. Si un evento no se entrega antes de 30 minutos o después de cinco intentos, lo que ocurra primero, se pone en la cola de mensajes fallidos. Si establece el número máximo de intentos de entrega en diez, con respecto a la programación exponencial de reintentos, el número máximo de seis intentos de entrega ocurrirá antes de que se alcance el TTL de 30 minutos; por lo tanto, establecer el número máximo de intentos en diez no tendrá ningún impacto en este caso y los eventos serán fallidos a los 30 minutos.
Contenido relacionado
- Para una aplicación de ejemplo que usa una aplicación de función de Azure para procesar los eventos de mensajes fallidos, consulte Ejemplos de mensajes fallidos de Azure Event Grid para .NET.
- Para obtener información acerca de los reintentos y las entregas de eventos, consulte Entrega y reintento de entrega de mensajes de Event Grid.