Filas de mensagens mortas (DLQs) do Amazon SNS - Amazon Simple Notification Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Filas de mensagens mortas (DLQs) do Amazon SNS

Uma fila de mensagens mortas é uma fila do Amazon SQS para a qual uma assinatura do Amazon SNS pode enviar mensagens que não podem ser entregues aos assinantes com êxito. As mensagens que não podem ser entregues devido a erros do cliente ou erros do servidor são mantidas na fila de mensagens mortas para análise ou reprocessamento adicionais. Para obter mais informações, consulte Configurar uma fila de mensagens mortas do Amazon SNS para uma assinatura e Novas tentativas de entrega de mensagens do Amazon SNS.

nota
  • A assinatura do Amazon SNS e a fila do Amazon SQS devem estar na mesmaAWSe região.

  • Em um tópico FIFO, você pode usar uma fila do Amazon SQS como uma fila de mensagens não entregues para a assinatura do Amazon SNS. As assinaturas de tópicos FIFO usam filas FIFO e as de tópicos padrão usam filas padrão.

  • Para usar uma fila criptografada do Amazon SQS como uma fila de mensagens não entregues, você deve usar um KMS personalizado com uma política de chave que conceda à entidade principal do serviço Amazon SNS acesso a ações da API do AWS KMS. Para obter mais informações, consulteCriptografia inativaneste guia eProteção de dados do Amazon SQS usando criptografia no lado do servidor (SSE) eAWS KMSnoGuia do desenvolvedor do Amazon Simple Queue Service.

Por que há falha nas entregas de mensagens?

Em geral, há falha na entrega de mensagens quando o Amazon SNS não pode acessar um endpoint inscrito devido a um erro do lado do cliente ou um erro do lado do servidor. Quando o Amazon SNS recebe um erro do lado do cliente ou continua a receber um erro do lado do servidor para uma mensagem além do número de tentativas especificado pela política de novas tentativas correspondente, o Amazon SNS descarta a mensagem, a menos que uma fila de mensagens mortas esteja anexada à inscrição. Entregas com falha não alteram o status de suas inscrições. Para obter mais informações, consulte Novas tentativas de entrega de mensagens do Amazon SNS.

Erros no lado do cliente,

Erros do lado do cliente podem ocorrer quando o Amazon SNS tem metadados de inscrição obsoletos. Esses erros geralmente ocorrem quando um proprietário exclui o endpoint (por exemplo, uma função do Lambda inscrita em um tópico do Amazon SNS) ou quando um proprietário altera a política anexada ao endpoint inscrito de uma forma que impede que o Amazon SNS entregue as mensagens para o ponto de endpoint. O Amazon SNS não tenta novamente a entrega da mensagem que falha como resultado de um erro do lado do cliente.

Erros no lado do servidor

Erros do lado do servidor podem ocorrer quando o sistema responsável pelo endpoint inscrito se torna indisponível ou retorna uma exceção que indica que ele não pode processar uma solicitação válida do Amazon SNS. Quando ocorrem erros do lado do servidor, o Amazon SNS tenta novamente as entregas com falha usando uma função de recuo exponencial ou linear. Para erros do lado do servidor causados por endpoint gerenciados pela AWS com suporte do Amazon SQS ou do AWS Lambda, o Amazon SNS tenta novamente a entrega até 100.015 vezes, ao longo de 23 dias.

Os endpoints gerenciados pelo cliente (como HTTP, SMTP, SMS ou push em dispositivos móveis) também podem causar erros no lado do servidor. O Amazon SNS tenta novamente a entrega para esses tipos de endpoints também. Enquanto os endpoints HTTP oferecem suporte a políticas de novas tentativas definidas pelo cliente, o Amazon SNS define uma política de novas tentativas de entrega interna como 50 vezes ao longo de 6 horas, para SMTP, SMS e endpoints de push para dispositivos móveis.

Como as filas de mensagens mortas funcionam?

Uma fila de mensagens mortas é anexada a uma inscrição do Amazon SNS (em vez de um tópico) porque as entregas de mensagens acontecem no nível de inscrição. Isso permite identificar o endpoint de destino original para cada mensagem com mais facilidade.

Uma fila de mensagens mortas associada a uma inscrição do Amazon SNS é uma fila comum do Amazon SQS. Para obter mais informações sobre o período de retenção de mensagens, consulte Quotas Related to Messages (“Cotas relacionadas a mensagens”) no Guia do desenvolvedor do Amazon Simple Queue Service. É possível alterar o período de retenção de mensagens usando a ação da API SetQueueAttributes do Amazon SQS. Para tornar seus aplicativos mais resilientes, recomendamos definir o período máximo de retenção para filas de mensagens mortas como 14 dias.

Como as mensagens são movidas para uma fila de mensagens mortas?

As mensagens são movidas para uma fila de mensagens mortas por meio de uma política de redirecionamento. Uma política de redirecionamento é um objeto JSON que se refere ao ARN da fila de mensagens mortas. O atributo deadLetterTargetArn especifica o ARN. O ARN deve apontar para uma fila do Amazon SQS na mesma conta e região da Conta da AWS que sua assinatura do Amazon SNS. Para obter mais informações, consulte Configurar uma fila de mensagens mortas do Amazon SNS para uma assinatura.

O objeto JSON a seguir é uma política de redirecionamento de exemplo, anexada a uma assinatura SNS.

{ "deadLetterTargetArn": "arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue" }

Como posso mover mensagens de uma fila de mensagens mortas?

É possível mover mensagens para fora de uma fila de mensagens mortas de duas maneiras:

  • Evitar escrever lógica do consumidor do Amazon SQS: defina sua fila de mensagens mortas como uma fonte de evento para a função do Lambda drenar sua fila de mensagens mortas.

  • Escrever lógica do consumidor do Amazon SQS: use a API do Amazon SQS, o AWS SDK ou a AWS CLI para escrever a lógica personalizada do consumidor para sondagem, processamento e exclusão das mensagens na fila de mensagens mortas.

Como posso monitorar e registrar em log filas de mensagens mortas?

É possível usar métricas do Amazon CloudWatch para monitorar filas de mensagens mortas associadas às suas inscrições do Amazon SNS. Todas as filas do Amazon SQS emitem métricas do CloudWatch em intervalos de um minuto. Para obter mais informações, consulte Available CloudWatch Metrics for Amazon SQS (“Métricas disponíveis do CloudWatch para Amazon SQS”) no Guia do desenvolvedor do Amazon Simple Queue Service. Todas as inscrições do Amazon SNS com filas de mensagens mortas também emitem métricas do CloudWatch. Para obter mais informações, consulte Monitorar tópicos do Amazon SNS usando o CloudWatch.

Para ser notificado sobre atividades em suas filas de mensagens mortas, use métricas e alarmes do CloudWatch. Por exemplo, quando você espera que a fila de mensagens mortas esteja sempre vazia, é possível criar um alarme do CloudWatch para a métrica NumberOfMessagesSent. Defina o limite do alarme como 0 e especifique um tópico do Amazon SNS a ser notificado quando o alarme for disparado. Esse tópico do Amazon SNS pode entregar sua notificação de alarme a qualquer tipo de ponto de endpoint (como um endereço de e-mail, número de telefone ou aplicativo de pager móvel).

É possível usar o CloudWatch Logs para investigar as exceções que fazem com que haja falha em todas as entregas do Amazon SNS e para que as mensagens sejam enviadas para filas de mensagens mortas. O Amazon SNS pode registrar entregas bem-sucedidas e com falha no CloudWatch. Para obter mais informações, consulte Status de entrega de mensagens do Amazon SNS.