Eu configurei uma fila de mensagens não entregues (DLQ) do Amazon Simple Queue Service (Amazon SQS). Minhas mensagens do Amazon SQS foram transferidas inesperadamente para a DLQ, e eu quero entender o motivo.
Resolução
Suas mensagens do Amazon SQS podem ser transferidas para a DLQ pelos seguintes motivos.
ReceiveCount excede maxReceiveCount
O valor padrão de maxReceiveCount é 10. Quando o valor de ReceiveCount excede o valor de maxReceiveCount em uma fila, o Amazon SQS move a mensagem para a DLQ. Para resolver esse problema, é uma prática recomendada definir o valor de maxReceiveCount alto o suficiente para permitir novas tentativas do Amazon SQS. Por exemplo, se o valor de maxReceiveCount for definido como 1, uma falha no recebimento de uma mensagem fará com que a mensagem seja transferida para a DLQ.
Sua função do Lambda requer configuração adicional
Se você usa uma função do AWS Lambda para processar mensagens em sua fila do Amazon SQS, talvez seja necessário reconfigurar sua função. Para obter mais informações, consulte Por que minha função do Lambda está repetindo mensagens válidas do Amazon SQS e colocando-as na minha fila de mensagens não entregues?
Você usou o Console de Gerenciamento da AWS para visualizar mensagens do SQS
As mensagens do SQS que você visualiza no Console de Gerenciamento da AWS podem ser transferidas para a DLQ porque são contabilizadas na política de redirecionamento da fila. É possível aumentar o valor de Maximum receives da política de redrive da DLQ para até 1.000. Para obter mais informações, consulte Configure uma fila de mensagens não entregues usando o console do Amazon SQS.
Você tentou excluir mensagens do SQS com um ReceiptHandle expirado ou após o período de tempo limite de visibilidade
As mensagens são movidas para a DLQ após novas tentativas. O erro QueueDoesNotExist pode ocorrer quando você executa uma operação DeleteMessage com um ReceiptHandle anterior da fila principal. Você deve excluir mensagens na janela VisibilityTimeout configurada. Para obter mais informações, consulte Como soluciono o erro QueueDoesNotExist ao fazer chamadas de API para minha fila do Amazon SQS?
Informações relacionadas
Usar filas de mensagens não entregues no Amazon SQS