Compartir a través de


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.

Nota

  • Cree una cuenta de almacenamiento y un contenedor de blobs en el almacenamiento antes de ejecutar los comandos de este artículo.
  • El servicio Event Grid crea blobs en este contenedor. Los nombres de los blobs tendrán el nombre de la suscripción de 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 tendrán 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 anterior, .../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 contendrán uno o varios eventos en una matriz, que es un comportamiento importante que debe tenerse en cuenta cuando se procesan 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 contendrá 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.

Captura de pantalla que muestra la configuración de mensajes fallidos de una suscripción a un evento.

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.

Captura de pantalla que muestra la configuración de mensajes fallidos de una suscripción a un evento.

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 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, use Azure PowerShell versión 1.1.0 o 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.

Captura de pantalla que muestra la configuración de la directiva de reintentos de una suscripción a un evento.

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.

Captura de pantalla que muestra la configuración de la directiva de reintentos de una suscripción a un evento que ya existía.

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. Cuando un evento no se entrega después de 30 minutos (o) no se entrega después de 5 intentos, lo que ocurra primero, el evento se pone en la cola de mensajes fallidos. Si establece el número máximo de intentos de entrega en 10, con respecto a la programación exponencial de reintentos, el número máximo de 6 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 10 no tendrá ningún impacto en este caso y los eventos se eliminarán después de 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. Cuando un evento no se entrega después de 30 minutos (o) no se entrega después de 5 intentos, lo que ocurra primero, el evento se pone en la cola de mensajes fallidos. Si establece el número máximo de intentos de entrega en 10, con respecto a la programación exponencial de reintentos, el número máximo de 6 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 10 no tendrá ningún impacto en este caso y los eventos se eliminarán después de 30 minutos.

Pasos siguientes