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á.
Solucionar problemas de fila de mensagens não entregues do Amazon SQS e de redirecionamento de DLQ
Os tópicos a seguir abordam as causas mais comuns dos problemas de DLQ e redirecionamento de DLQ do Amazon SQS e como solucioná-los. Consulte mais informações em How do I troubleshoot Amazon SQS DLQ redrive issues?
Problemas de DLQ
Saiba mais sobre problemas comuns de DLQ e como resolvê-los.
Visualizar mensagens usando o console pode fazer com que elas sejam movidas para uma fila de mensagens mortas
O Amazon SQS considera a visualização de uma mensagem no console para a política de redirecionamento da fila correspondente. Dessa forma, se você visualizar uma mensagem no console pelo número de vezes especificado na política de redirecionamento da fila correspondente, a mensagem será movida para a fila de mensagens não entregues da fila correspondente.
Para ajustar esse comportamento, você pode executar uma das seguintes ações:
-
Aumentar a definição de Maximum Receives da política de redirecionamento da fila correspondente.
-
Evitar a visualização de mensagens da fila correspondente no console.
O NumberOfMessagesSent
e o NumberOfMessagesReceived
de uma fila de mensagens não entregues não correspondem
Se você enviar uma mensagem para uma dead letter queue manualmente, ela será capturada pela métrica NumberOfMessagesSent. No entanto, se uma mensagem for enviada para uma dead-letter queue como resultado de uma falha na tentativa de processamento, ela não será capturada por essa métrica. Assim, é possível que os valores de NumberOfMessagesSent
e NumberOfMessagesReceived sejam diferentes.
Criar e configurar redirecionamento de fila de mensagens não entregues
O redirecionamento da fila de mensagens não entregues exige que você defina as permissões apropriadas para que o Amazon SQS receba mensagens da fila de mensagens não entregues e envie mensagens para a fila de destino. Se você não tiver as permissões corretas, a tarefa de redirecionamento da fila de mensagens não entregues poderá falhar. Você pode exibir o status da tarefa de redirecionamento de mensagens para corrigir os problemas e tentar novamente.
Gerenciamento de falhas de mensagens de fila padrão e FIFO
As filas padrão continuam a processar mensagens até a expiração do período de retenção. Esse processamento contínuo minimiza as chances de a fila ser bloqueada por mensagens não consumidas. Ter um número grande de mensagens que o consumir falha repetidamente em excluir pode aumentar os custos e colocar uma carga extra no hardware. Para manter os custos baixos, mova mensagens com falha para a fila de mensagens não entregues.
As filas padrão também permitem grande número de mensagens em trânsito. Se a maioria de suas mensagens não puder ser consumida e não for enviada para uma fila de mensagens não entregues, sua taxa de processamento de mensagens válidas poderá diminuir. Para manter a eficiência da fila, garanta que sua aplicação lide com o processamento de mensagens corretamente.
As filas FIFO garantem o processamento exatamente uma vez, consumindo mensagens de um grupo de mensagens em sequência. Assim, embora o consumidor possa continuar a recuperar mensagens ordenadas de outro grupo de mensagens, o primeiro grupo permanece indisponível até que a mensagem que está bloqueando a fila seja processada com sucesso ou movida para uma fila de mensagens não entregues.
Além disso, as filas FIFO permitem um número menor de mensagens em trânsito. Para evitar que a fila FIFO seja bloqueada por uma mensagem, garanta que sua aplicação lide com o processamento de mensagens corretamente.
Para obter mais informações, consulte Cotas de mensagens do Amazon SQS e Práticas recomendadas do Amazon SQS.
Problemas de redirecionamento de DLQ
Saiba mais sobre problemas comuns de redirecionamento de DLQ e como resolvê-los.
AccessDenied problema de permissão
O erro AccessDenied
ocorre quando o redirecionamento de DLQ falha porque a entidade do AWS Identity and Access Management (IAM) não tem as permissões necessárias.
Exemplo de mensagem de erro:
Failed to create redrive task. Error code: AccessDenied - Queue Permissions to Redrive.
As seguintes permissões de API são necessárias para fazer solicitações de redirecionamento de DLQ:
Como iniciar um redirecionamento de mensagens:
-
Permissões da fila de mensagens não entregues:
-
sqs:StartMessageMoveTask
-
sqs:ReceiveMessage
-
sqs:DeleteMessage
-
sqs:GetQueueAttributes
-
kms:Decrypt
: quando a fila de mensagens não entregues ou a fila de origem original são criptografadas.
-
-
Permissões da fila de destino:
-
sqs:SendMessage
-
kms:GenerateDataKey
: quando a fila de destino é criptografada. -
kms:Decrypt
: quando a fila de destino é criptografada.
-
Como cancelar um redirecionamento de mensagem em andamento:
-
Permissões da fila de mensagens não entregues:
-
sqs:CancelMessageMoveTask
-
sqs:ReceiveMessage
-
sqs:DeleteMessage
-
sqs:GetQueueAttributes
-
kms:Decrypt
: quando a fila de mensagens não entregues ou a fila de origem original são criptografadas.
-
Como exibir o status de movimentação de uma mensagem:
-
Permissões da fila de mensagens não entregues:
-
sqs:ListMessageMoveTasks
-
sqs:GetQueueAttributes
-
Erro NonExistentQueue
O erro NonExistentQueue
ocorre quando a fila de origem do Amazon SQS não existe ou foi excluída. Verifique e redirecione para uma fila do Amazon SQS que está presente.
Exemplo de mensagem de erro:
Failed: AWS.SimpleQueueService.NonExistentQueue
Erro CouldNotDetermineMessageSource
O erro CouldNotDetermineMessageSource
ocorre quando você tenta iniciar um redirecionamento de DLQ com os seguintes cenários:
-
Uma mensagem do Amazon SQS enviada diretamente para a DLQ com API
SendMessage
. -
Uma mensagem do tópico ou função do Amazon Simple Notification Service (Amazon SNS) com o AWS Lambda DLQ configurado.
Para resolver esse erro, escolha Redirecionar para um destino personalizado ao iniciar o redirecionamento. Depois, insira o ARN da fila do Amazon SQS para mover todas as mensagens da DLQ para a fila de destino.
Exemplo de mensagem de erro:
Failed: CouldNotDetermineMessageSource