

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 dead letter queues no Amazon SQS
<a name="examples-sqs-dead-letter-queues"></a>

O Amazon SQS comporta *filas de mensagens não entregues*. Fila de mensagens não entregues é uma fila para a qual outras filas 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.

Para criar uma fila de mensagens não entregues, é necessário criar primeiro uma *política de redirecionamento* e definir a política nos atributos da fila.

**Importante**  
Uma fila de mensagens não entregues deve ter o mesmo tipo de fila (FIFO ou padrão) da fila de origem. Ela também deve ser criada usando a mesma fila Conta da AWS e Região da AWS como a de origem.

## Pré-requisitos
<a name="codeExamplePrereq"></a>

Antes de começar, recomendamos que você leia [Getting started using the AWS SDK para C\+\+](getting-started.md). 

Baixe o exemplo código de código e crie a solução conforme descrito em [Conceitos básicos dos exemplos de código](getting-started-code-examples.md). 

Para executar os exemplos, o perfil de usuário que seu código usa para fazer as solicitações deve ter as permissões adequadas AWS (para o serviço e a ação). Para obter mais informações, consulte [Fornecimento de AWS credenciais.](credentials.md)

## Criar uma política de redirecionamento
<a name="sqs-dead-letter-queue-create-redrive-policy"></a>

Uma política de redirecionamento é especificada em JSON. Para criá-la, você pode usar a classe de utilitário JSON fornecida com o AWS SDK para C\+\+.

Veja um exemplo de função que cria uma política de redirecionamento fornecendo a ela o ARN da fila de mensagens não entregues, além do número máximo de vezes em que a mensagem pode ser recebida e não processada antes ser enviada à fila de mensagens não entregues.

 **Inclui** 

```
#include <aws/core/Aws.h>
#include <aws/core/utils/json/JsonSerializer.h>
```

 **Código** 

```
Aws::String MakeRedrivePolicy(const Aws::String &queueArn, int maxReceiveCount) {
    Aws::Utils::Json::JsonValue redrive_arn_entry;
    redrive_arn_entry.AsString(queueArn);

    Aws::Utils::Json::JsonValue max_msg_entry;
    max_msg_entry.AsInteger(maxReceiveCount);

    Aws::Utils::Json::JsonValue policy_map;
    policy_map.WithObject("deadLetterTargetArn", redrive_arn_entry);
    policy_map.WithObject("maxReceiveCount", max_msg_entry);

    return policy_map.View().WriteReadable();
}
```

Consulte o [exemplo completo](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/dead_letter_queue.cpp).

## Definir a política de redirecionamento em sua fila de origem
<a name="sqs-dead-letter-queue-set-redrive-policy"></a>

Para concluir a configuração da fila de letras mortas, chame a função de `SetQueueAttributes` membro da SQSClient classe com um [SetQueueAttributesRequest](https://docs.aws.amazon.com/sdk-for-cpp/latest/api/aws-cpp-sdk-sqs/html/class_aws_1_1_s_q_s_1_1_model_1_1_set_queue_attributes_request.html)objeto para o qual você definiu o `RedrivePolicy` atributo com sua política de redrive JSON.

 **Inclui** 

```
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/SetQueueAttributesRequest.h>
#include <iostream>
```

 **Código** 

```
    Aws::SQS::Model::SetQueueAttributesRequest request;
    request.SetQueueUrl(srcQueueUrl);
    request.AddAttributes(
            Aws::SQS::Model::QueueAttributeName::RedrivePolicy,
            redrivePolicy);

    const Aws::SQS::Model::SetQueueAttributesOutcome outcome =
            sqsClient.SetQueueAttributes(request);
    if (outcome.IsSuccess()) {
        std::cout << "Successfully set dead letter queue for queue  " <<
                  srcQueueUrl << " to " << deadLetterQueueARN << std::endl;
    }
    else {
        std::cerr << "Error setting dead letter queue for queue " <<
                  srcQueueUrl << ": " << outcome.GetError().GetMessage() <<
                  std::endl;
    }
```

Consulte o [exemplo completo](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/dead_letter_queue.cpp).

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