

O AWS SDK para Java 1.x chegou end-of-support em 31 de dezembro de 2025. Recomendamos que você migre para o [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html) para continuar recebendo novos recursos, melhorias de disponibilidade e atualizações de segurança.

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á.

# Usar fila de mensagens mortas no Amazon SQS
<a name="examples-sqs-dead-letter-queues"></a>

 O Amazon SQS fornece suporte para *filas de mensagens mortas*. Uma fila de mensagens mortas é uma fila para a qual outras filas (de origem) podem enviar as mensagens que não são processadas com êxito. Você pode separar e isolar essas mensagens na dead letter queue para determinar por que o processamento não teve sucesso.

## Criar uma dead letter queue
<a name="sqs-dead-letter-queue-create-dl-queue"></a>

Uma dead letter queue é criada da mesma maneira que uma fila regular, mas tem as seguintes restrições:
+ Uma dead letter queue deve ter o mesmo tipo de fila (FIFO ou padrão) da fila de origem.
+ Uma fila de mensagens não entregues deve ser criada usando-se a mesma Conta da AWS e região da fila de origem.

Criamos aqui duas filas do Amazon SQS idênticas, uma que funcionará como a dead letter queue:

 **Importações** 

```
import com.amazonaws.services.sqs.AmazonSQS;
import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
import com.amazonaws.services.sqs.model.AmazonSQSException;
```

 **Código da** 

```
final AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient();

// Create source queue
try {
    sqs.createQueue(src_queue_name);
} catch (AmazonSQSException e) {
    if (!e.getErrorCode().equals("QueueAlreadyExists")) {
        throw e;
    }
}

// Create dead-letter queue
try {
    sqs.createQueue(dl_queue_name);
} catch (AmazonSQSException e) {
    if (!e.getErrorCode().equals("QueueAlreadyExists")) {
        throw e;
    }
}
```

Veja o [exemplo completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/sqs/src/main/java/aws/example/sqs/DeadLetterQueues.java) no GitHub.

## Designar uma dead letter queue para uma fila de origem
<a name="sqs-dead-letter-queue-set-redrive-policy"></a>

Para designar uma fila de mensagens mortas, é necessário criar primeiro uma *política de redirecionamento* e definir a política nos atributos da fila. Uma política de redirecionamento é especificada em JSON e determina o ARN da fila de mensagens mortas, além do número máximo de vezes em que a mensagem pode ser recebida e não processada antes ser enviada para a fila de mensagens mortas.

Para definir a política de redirecionamento para a fila de origem, chame o método `setQueueAttributes` da classe do AmazonSQS com um objeto [SetQueueAttributesRequest](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/sqs/model/SetQueueAttributesRequest.html) para o qual você definiu o atributo `RedrivePolicy` com a política de redirecionamento JSON.

 **Importações** 

```
import com.amazonaws.services.sqs.model.GetQueueAttributesRequest;
import com.amazonaws.services.sqs.model.GetQueueAttributesResult;
import com.amazonaws.services.sqs.model.SetQueueAttributesRequest;
```

 **Código da** 

```
String dl_queue_url = sqs.getQueueUrl(dl_queue_name)
                         .getQueueUrl();

GetQueueAttributesResult queue_attrs = sqs.getQueueAttributes(
        new GetQueueAttributesRequest(dl_queue_url)
            .withAttributeNames("QueueArn"));

String dl_queue_arn = queue_attrs.getAttributes().get("QueueArn");

// Set dead letter queue with redrive policy on source queue.
String src_queue_url = sqs.getQueueUrl(src_queue_name)
                          .getQueueUrl();

SetQueueAttributesRequest request = new SetQueueAttributesRequest()
        .withQueueUrl(src_queue_url)
        .addAttributesEntry("RedrivePolicy",
                "{\"maxReceiveCount\":\"5\", \"deadLetterTargetArn\":\""
                + dl_queue_arn + "\"}");

sqs.setQueueAttributes(request);
```

Veja o [exemplo completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/sqs/src/main/java/aws/example/sqs/DeadLetterQueues.java) no GitHub.

## Mais informações
<a name="more-info"></a>
+  [Usar filas de mensagens não entregues doAmazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html) no Guia do desenvolvedor do Amazon SQS
+  [SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html) na Referência de API do Amazon SQS