Definir a localização e a política de repetição das mensagens não entregues
Ao criar uma assinatura de evento, você pode personalizar as configurações para entrega de eventos. Este artigo mostra como configurar um local de letra morta e personalizar as configurações de repetição. Para obter informações sobre esses recursos, consulte Entrega e repetição de mensagens da Grade de Eventos.
Nota
Para saber mais sobre entrega de mensagens, tentativas e letras mortas, consulte o artigo conceitual: Entrega e repetição de mensagens da Grade de Eventos.
Definir localização de letra morta
Para definir um local de letra morta, você precisa de uma conta de armazenamento para armazenar eventos que não podem ser entregues a um ponto de extremidade. Os exemplos obtêm o ID de recurso de uma conta de armazenamento existente. Eles criam uma assinatura de evento que usa um contêiner nessa conta de armazenamento para o ponto de extremidade de letra morta.
Nota
- Crie uma conta de armazenamento e um contêiner de blob no armazenamento antes de executar comandos neste artigo.
- O serviço Grade de Eventos cria blobs nesse contêiner. Os nomes dos blobs terão o nome da assinatura da Grade de Eventos com todas as letras em maiúsculas. Por exemplo, se o nome da assinatura for
My-Blob-Subscription
, os nomes dos blobs de letra morta terãoMY-BLOB-SUBSCRIPTION
(myblobcontainer/MY-BLOB-SUBSCRIPTION/2019/8/8/5/111111111-1111-1111-1111-111111111111.json
). Esse comportamento é para proteger contra diferenças no tratamento de casos entre os serviços do Azure. - No exemplo
.../2019/8/8/5/...
acima, representa a data e hora acolchoadas diferentes de zero (UTC):.../YYYY/MM/DD/HH/...
.' - Os blobs de letra morta criados conterão um ou mais eventos em uma matriz, que é um comportamento importante a ser considerado ao processar letras mortas.
Portal do Azure
Ao criar uma assinatura de evento, você pode habilitar o lettering morto na guia Recursos adicionais, conforme mostrado na imagem a seguir. Depois de habilitar o recurso, especifique o contêiner de blob que conterá eventos com letras mortas e a assinatura do Azure que tem o armazenamento de blob.
Opcionalmente, você pode habilitar uma identidade gerenciada atribuída pelo sistema ou pelo usuário para letras mortas. A identidade gerenciada deve ser membro de uma função RBAC (controle de acesso baseado em função) que permita gravar eventos no armazenamento.
Você também pode habilitar letras mortas e definir as configurações para uma assinatura de evento existente. Na página Subscrição de Eventos da sua subscrição de evento, mude para o separador Funcionalidades adicionais para ver as definições de letra morta, conforme mostrado na imagem seguinte.
CLI do Azure
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 desativar as letras mortas, execute novamente o comando para criar a assinatura do evento, mas não forneça um valor para deadletter-endpoint
. Não é necessário excluir a assinatura do evento.
Nota
Se você estiver usando a CLI do Azure em sua máquina local, use a CLI do Azure versão 2.0.56 ou superior. Para obter instruções sobre como instalar a versão mais recente da CLI do Azure, consulte Instalar a CLI do 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 desativar as letras mortas, execute novamente o comando para criar a assinatura do evento, mas não forneça um valor para DeadLetterEndpoint
. Não é necessário excluir a assinatura do evento.
Nota
Se você estiver usando o Azure PowerShell em sua máquina local, use o Azure PowerShell versão 1.1.0 ou superior. Transfira e instale o Azure PowerShell mais recente a partir das transferências do Azure.
Definir política de repetição
Ao criar uma assinatura de Grade de Eventos, você pode definir valores para quanto tempo a Grade de Eventos deve tentar entregar o evento. Por padrão, a Grade de Eventos tenta por 24 horas (1440 minutos) ou 30 vezes. Você pode definir qualquer um desses valores para sua assinatura da Grade de Eventos. O valor do tempo de vida do evento deve ser um número inteiro de 1 a 1440. O valor para max retries deve ser um inteiro de 1 a 30.
Não é possível configurar o agendamento de novas tentativas.
Portal do Azure
Ao criar uma assinatura de evento, você pode definir as configurações de política de repetição na guia Recursos adicionais.
Você também pode definir configurações de política de repetição para uma assinatura de evento existente. Na página Assinatura de Evento da sua assinatura de evento, alterne para a guia Recursos adicionais para ver as configurações de política de novas tentativas, conforme mostrado na imagem a seguir.
CLI do Azure
Para definir o tempo de vida do evento para um valor diferente 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 definir o máximo de tentativas para um valor diferente de 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
Se você definir ambos event-ttl
e max-deliver-attempts
, a Grade de Eventos usará o primeiro a expirar para determinar quando interromper a entrega de eventos. Por exemplo, se você definir 30 minutos como tempo de vida (TTL) e 5 tentativas máximas de entrega. Quando um evento não é entregue após 30 minutos (ou) não é entregue após 5 tentativas, o que acontecer primeiro, o evento é escrito sem saída. Se você definir o número máximo de tentativas de entrega para 10, com relação ao cronograma exponencial de novas tentativas, o número máximo de 6 tentativas de entrega acontece antes de 30 minutos TTL será alcançado, portanto, definir o número máximo de tentativas para 10 não terá impacto neste caso e os eventos serão mortos após 30 minutos.
PowerShell
Para definir o tempo de vida do evento para um valor diferente 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 definir o máximo de tentativas para um valor diferente de 30, use:
$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id
New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint <endpoint_URL> `
-MaxDeliveryAttempt 18
Nota
Se você definir ambos event-ttl
e max-deliver-attempts
, a Grade de Eventos usará o primeiro a expirar para determinar quando interromper a entrega de eventos. Por exemplo, se você definir 30 minutos como tempo de vida (TTL) e 5 tentativas máximas de entrega. Quando um evento não é entregue após 30 minutos (ou) não é entregue após 5 tentativas, o que acontecer primeiro, o evento é escrito sem saída. Se você definir o número máximo de tentativas de entrega para 10, com relação ao cronograma exponencial de novas tentativas, o número máximo de 6 tentativas de entrega acontece antes de 30 minutos TTL será alcançado, portanto, definir o número máximo de tentativas para 10 não terá impacto neste caso e os eventos serão mortos após 30 minutos.
Próximos passos
- Para obter um aplicativo de exemplo que usa um aplicativo Azure Function para processar eventos de letra morta, consulte Exemplos de letra morta da grade de eventos do Azure para .NET.
- Para obter informações sobre entrega e tentativas de eventos, entrega e repetição de mensagens da Grade de Eventos.
- Para obter uma introdução ao Event Grid, veja Sobre o Azure Event Grid.
- Para começar rapidamente a usar a Grade de Eventos, consulte Criar e rotear eventos personalizados com a Grade de Eventos do Azure.