

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
<a name="troubleshooting-dlq-redrive"></a>

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?](https://repost.aws/knowledge-center/sqs-dead-letter-queue-redrive) no *Guia do Centro de Conhecimento da AWS *.

## Problemas de DLQ
<a name="troubleshooting-dlq-issues"></a>

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
<a name="sqs-dlq-console"></a>

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
<a name="sqs-dlq-number-of-messages"></a>

Se você enviar uma mensagem para uma fila de mensagens não entregues manualmente, ela será capturada pela métrica [`NumberOfMessagesSent`](sqs-available-cloudwatch-metrics.md). 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`](sqs-available-cloudwatch-metrics.md) sejam diferentes.

### Criar e configurar redirecionamento de fila de mensagens não entregues
<a name="sqs-dlq-redrive-permissions"></a>

O redirecionamento da fila de mensagens não entregues exige que você defina as [permissões](sqs-configure-dead-letter-queue-redrive.md#sqs-configure-dead-letter-queue-redrive-permissions) 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
<a name="sqs-dead-letter-queues-handling-message-failure"></a>

As [**filas padrão**](standard-queues.md) continuam a processar mensagens até a expiração do [período de retenção](sqs-dead-letter-queues.md#understanding-message-retention-periods). 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**](sqs-fifo-queues.md) fornecem 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](quotas-messages.md) e [Práticas recomendadas do Amazon SQS](sqs-best-practices.md). 

## Problemas de redirecionamento de DLQ
<a name="troubleshooting-dlq-redrive-issues"></a>

Saiba mais sobre problemas comuns de redirecionamento de DLQ e como resolvê-los.

### AccessDenied problema de permissão
<a name="accessdenied-permission-issue"></a>

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`
<a name="nonexistentqueue-error"></a>

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
```

### CouldNotDetermineMessageSource erro
<a name="couldnotdeterminemessagesource-error"></a>

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`](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html).
+ 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
```