Partilhar via


Definir a localização e a política de repetição das mensagens não entregues

Ao criar uma subscrição de evento, pode personalizar as definições para entrega de eventos. Este artigo mostra-lhe como configurar uma localização de letra não entregue e personalizar as definições de repetição. Para obter informações sobre estas funcionalidades, veja Entrega e repetição de mensagens do Event Grid.

Nota

Para saber mais sobre a entrega de mensagens, as repetições e as letras não entregues, consulte o artigo conceptual: Entrega e repetição de mensagens do Event Grid.

Definir a localização da letra não entregue

Para definir uma localização de letra não entregue, precisa de uma conta de armazenamento para realizar eventos que não podem ser entregues num ponto final. Os exemplos obtêm o ID de recurso de uma conta de armazenamento existente. Criam uma subscrição de evento que utiliza um contentor nessa conta de armazenamento para o ponto final de letra não entregue.

Nota

  • Crie uma conta de armazenamento e um contentor de blobs no armazenamento antes de executar comandos neste artigo.
  • O serviço Event Grid cria blobs neste contentor. Os nomes dos blobs terão o nome da subscrição do Event Grid com todas as letras em maiúsculas. Por exemplo, se o nome da subscrição for My-Blob-Subscription, os nomes dos blobs de letras não entregues terão MY-BLOB-SUBSCRIPTION (myblobcontainer/MY-BLOB-SUBSCRIPTION/2019/8/8/5/111111111-1111-1111-1111-111111111111.json). Este comportamento é proteger contra diferenças no processamento de casos entre serviços do Azure.
  • No exemplo .../2019/8/8/5/... acima, representa a data e hora acolchoadas não zero (UTC): .../YYYY/MM/DD/HH/....'
  • Os blobs de letras não entregues criados conterão um ou mais eventos numa matriz, o que é um comportamento importante a ter em conta ao processar letras não entregues.

Portal do Azure

Ao criar uma subscrição de evento, pode ativar as letras não entregues no separador Funcionalidades adicionais , conforme mostrado na imagem seguinte. Depois de ativar a funcionalidade, especifique o contentor de blobs que irá conter eventos sem letras e a subscrição do Azure que tem o armazenamento de blobs.

Opcionalmente, pode ativar uma identidade gerida atribuída pelo sistema ou atribuída pelo utilizador para letras não entregues. A identidade gerida tem de ser membro de uma função de controlo de acesso baseado em funções (RBAC) que permita escrever eventos no armazenamento.

Captura de ecrã a mostrar a configuração de uma subscrição de evento sem cartas.

Também pode ativar as letras não entregues e configurar as definições de uma subscrição de evento existente. Na página Subscrição de Eventos da sua subscrição de eventos, mude para o separador Funcionalidades adicionais para ver as definições de letra não entregue, conforme mostrado na imagem seguinte.

Captura de ecrã a mostrar a configuração de uma subscrição de evento existente.

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 não entregues, execute novamente o comando para criar a subscrição do evento, mas não forneça um valor para deadletter-endpoint. Não precisa de eliminar a subscrição do evento.

Nota

Se estiver a utilizar a CLI do Azure no seu computador local, utilize a versão 2.0.56 ou superior da CLI do Azure. Para obter instruções sobre como instalar a versão mais recente da CLI do Azure, veja 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 não entregues, execute novamente o comando para criar a subscrição do evento, mas não forneça um valor para DeadLetterEndpoint. Não precisa de eliminar a subscrição do evento.

Nota

Se estiver a utilizar o Azure Poweshell no seu computador local, utilize Azure PowerShell versão 1.1.0 ou superior. Transfira e instale as Azure PowerShell mais recentes a partir das transferências do Azure.

Definir política de repetição

Ao criar uma subscrição do Event Grid, pode definir valores durante quanto tempo o Event Grid deve tentar entregar o evento. Por predefinição, o Event Grid tenta durante 24 horas (1440 minutos) ou 30 vezes. Pode definir qualquer um destes valores para a sua subscrição do Event Grid. O valor do evento time-to-live tem de ser um número inteiro de 1 a 1440. O valor das repetições máximas tem de ser um número inteiro de 1 a 30.

Não pode configurar a agenda de repetição.

Portal do Azure

Ao criar uma subscrição de evento, pode configurar as definições de política de repetição no separador Funcionalidades adicionais .

Captura de ecrã a mostrar a configuração da política de repetição de uma subscrição de evento.

Também pode configurar as definições de política de repetição para uma subscrição de evento existente. Na página Subscrição de Eventos da sua subscrição de eventos, mude para o separador Funcionalidades adicionais para ver as definições da política de repetição, conforme mostrado na imagem seguinte.

Captura de ecrã a mostrar a configuração da política de repetição de uma subscrição de evento existente.

CLI do Azure

Para definir o tempo de vida do evento para um valor diferente de 1440 minutos, utilize:

az eventgrid event-subscription create \
  -g gridResourceGroup \
  --topic-name <topic_name> \
  --name <event_subscription_name> \
  --endpoint <endpoint_URL> \
  --event-ttl 720

Para definir as repetições máximas para um valor diferente de 30, utilize:

az eventgrid event-subscription create \
  -g gridResourceGroup \
  --topic-name <topic_name> \
  --name <event_subscription_name> \
  --endpoint <endpoint_URL> \
  --max-delivery-attempts 18

Nota

Se definir e event-ttlmax-deliver-attempts, o Event Grid utiliza o primeiro para expirar para determinar quando parar a entrega de eventos. Por exemplo, se definir 30 minutos como tempo de vida (TTL) e 5 tentativas de entrega máximas. Quando um evento não é entregue após 30 minutos (ou) não é entregue após 5 tentativas, o que ocorrer primeiro, o evento é entregue sem letras. Se definir o número máximo de tentativas de entrega como 10, no que diz respeito ao agendamento exponencial de repetições, o número máximo de tentativas de entrega ocorrerá antes de 30 minutos o TTL será atingido, pelo que definir o número máximo de tentativas para 10 não terá qualquer impacto neste caso e os eventos serão incorretos após 30 minutos.

PowerShell

Para definir o tempo de vida do evento para um valor diferente de 1440 minutos, utilize:

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id

New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint <endpoint_URL> `
  -EventTtl 720

Para definir as repetições máximas para um valor diferente de 30, utilize:

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id

New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint <endpoint_URL> `
  -MaxDeliveryAttempt 18

Nota

Se definir e event-ttlmax-deliver-attempts, o Event Grid utiliza o primeiro para expirar para determinar quando parar a entrega de eventos. Por exemplo, se definir 30 minutos como tempo de vida (TTL) e 5 tentativas de entrega máximas. Quando um evento não é entregue após 30 minutos (ou) não é entregue após 5 tentativas, o que ocorrer primeiro, o evento é entregue sem letras. Se definir o número máximo de tentativas de entrega como 10, no que diz respeito ao agendamento exponencial de repetições, o número máximo de tentativas de entrega ocorrerá antes de 30 minutos o TTL será atingido, pelo que definir o número máximo de tentativas para 10 não terá qualquer impacto neste caso e os eventos serão incorretos após 30 minutos.

Passos seguintes