

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Exemples de code Amazon SQS utilisant le AWS SDK pour C\$1\$1
<a name="examples-sqs"></a>

Amazon Simple Queue Service (Amazon SQS) est un service de mise en file d'attente de messages entièrement géré qui facilite le découplage et le dimensionnement des microservices, des systèmes distribués et des applications sans serveur. Vous pouvez utiliser les exemples suivants pour programmer [Amazon SQS](https://aws.amazon.com/sqs) à l'aide du. AWS SDK pour C\$1\$1

**Note**  
Seul le code nécessaire pour démontrer certaines techniques est fourni dans ce guide, mais l'[exemple de code complet est disponible sur GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp). GitHub Vous pouvez télécharger un seul fichier source ou cloner le référentiel localement pour obtenir, créer et exécuter tous les exemples.

**Topics**
+ [Utilisation des files d'attente de messages Amazon SQS](examples-sqs-message-queues.md)
+ [Envoyer, recevoir et supprimer des messages Amazon SQS](examples-sqs-messages.md)
+ [Activation des longues interrogations pour les files d'attente de messages Amazon SQS](examples-sqs-long-polling.md)
+ [Configuration du délai de visibilité dans Amazon SQS](examples-sqs-visibility-timeout.md)
+ [Utilisation des files d'attente de lettres mortes dans Amazon SQS](examples-sqs-dead-letter-queues.md)

# Utilisation des files d'attente de messages Amazon SQS
<a name="examples-sqs-message-queues"></a>

Une *file de messages* est le conteneur logique que vous utilisez pour envoyer des messages de manière fiable dans Amazon SQS. Il existe deux types de files d'attente : *standard* et *FIFO* (premier entré, premier sorti). Pour en savoir plus sur les files d'attente et les différences entre ces types, consultez le [guide du développeur Amazon Simple Queue Service](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/).

Ces exemples C\$1\$1 vous montrent comment utiliser le AWS SDK pour C\$1\$1 pour créer, répertorier, supprimer et obtenir l'URL d'une file d'attente Amazon SQS.

## Conditions préalables
<a name="codeExamplePrereq"></a>

Avant de commencer, nous vous recommandons de lire [Commencer à utiliser le AWS SDK pour C\$1\$1](getting-started.md). 

Téléchargez l'exemple de code et créez la solution comme décrit dans[Commencer par des exemples de code](getting-started-code-examples.md). 

Pour exécuter les exemples, le profil utilisateur que votre code utilise pour effectuer les demandes doit disposer des autorisations appropriées AWS (pour le service et l'action). Pour plus d'informations, consultez la section [Fourniture AWS d'informations d'identification](credentials.md).

## Création d'une file d'attente
<a name="sqs-create-queue"></a>

Utilisez la fonction SQSClient de `CreateQueue` membre de classe et fournissez-lui un [CreateQueueRequest](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_create_queue_request.html)objet décrivant les paramètres de la file d'attente.

 **Comprend** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/CreateQueueRequest.h>
#include <iostream>
```

 **Code** 

```
    Aws::SQS::SQSClient sqsClient(clientConfiguration);

    Aws::SQS::Model::CreateQueueRequest request;
    request.SetQueueName(queueName);

    const Aws::SQS::Model::CreateQueueOutcome outcome = sqsClient.CreateQueue(request);
    if (outcome.IsSuccess()) {
        std::cout << "Successfully created queue " << queueName << " with a queue URL "
                  << outcome.GetResult().GetQueueUrl() << "." << std::endl;
    }
    else {
        std::cerr << "Error creating queue " << queueName << ": " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
```

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/create_queue.cpp).

## Répertorier les files d'attente
<a name="sqs-list-queues"></a>

Pour répertorier les files d'attente Amazon SQS pour votre compte, appelez la fonction SQSClient class `ListQueues` member et transmettez-lui un objet. [ListQueuesRequest](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_list_queues_request.html)

 **Comprend** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/ListQueuesRequest.h>
#include <iostream>
```

 **Code** 

```
    Aws::SQS::SQSClient sqsClient(clientConfiguration);

    Aws::SQS::Model::ListQueuesRequest listQueuesRequest;

    Aws::String nextToken; // Used for pagination.
    Aws::Vector<Aws::String> allQueueUrls;

    do {
        if (!nextToken.empty()) {
            listQueuesRequest.SetNextToken(nextToken);
        }
        const Aws::SQS::Model::ListQueuesOutcome outcome = sqsClient.ListQueues(
                listQueuesRequest);
        if (outcome.IsSuccess()) {
            const Aws::Vector<Aws::String> &queueUrls = outcome.GetResult().GetQueueUrls();
            allQueueUrls.insert(allQueueUrls.end(),
                                queueUrls.begin(),
                                queueUrls.end());

            nextToken = outcome.GetResult().GetNextToken();
        }
        else {
            std::cerr << "Error listing queues: " <<
                      outcome.GetError().GetMessage() << std::endl;
            return false;
        }

    } while (!nextToken.empty());

    std::cout << allQueueUrls.size() << " Amazon SQS queue(s) found." << std::endl;
    for (const auto &iter: allQueueUrls) {
        std::cout << " " << iter << std::endl;
    }
```

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/list_queues.cpp).

## Obtenir l'URL de la file d'attente
<a name="sqs-get-queue-url"></a>

Pour obtenir l'URL d'une file d'attente Amazon SQS existante, appelez la fonction SQSClient class `GetQueueUrl` member.

 **Comprend** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/GetQueueUrlRequest.h>
#include <iostream>
```

 **Code** 

```
    Aws::SQS::SQSClient sqsClient(clientConfiguration);

    Aws::SQS::Model::GetQueueUrlRequest request;
    request.SetQueueName(queueName);

    const Aws::SQS::Model::GetQueueUrlOutcome outcome = sqsClient.GetQueueUrl(request);
    if (outcome.IsSuccess()) {
        std::cout << "Queue " << queueName << " has url " <<
                  outcome.GetResult().GetQueueUrl() << std::endl;
    }
    else {
        std::cerr << "Error getting url for queue " << queueName << ": " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
```

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/get_queue_url.cpp).

## Suppression d'une file d'attente
<a name="sqs-delete-queue"></a>

Fournissez l'[URL](#sqs-get-queue-url) de la fonction `DeleteQueue` membre de SQSClient classe.

 **Comprend** 

```
#include <aws/core/Aws.h>
#include <aws/core/client/DefaultRetryStrategy.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/DeleteQueueRequest.h>
#include <iostream>
```

 **Code** 

```
    Aws::SQS::Model::DeleteQueueRequest request;
    request.SetQueueUrl(queueURL);

    const Aws::SQS::Model::DeleteQueueOutcome outcome = sqsClient.DeleteQueue(request);
    if (outcome.IsSuccess()) {
        std::cout << "Successfully deleted queue with url " << queueURL <<
                  std::endl;
    }
    else {
        std::cerr << "Error deleting queue " << queueURL << ": " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
```

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/delete_queue.cpp).

## Plus d'informations
<a name="more-info"></a>
+  [Comment fonctionnent les files d'attente Amazon SQS dans le guide](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-how-it-works.html) du développeur Amazon Simple Queue Service
+  [CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html)dans la référence de l'API Amazon Simple Queue Service
+  [GetQueueUrl](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueUrl.html)dans la référence de l'API Amazon Simple Queue Service
+  [ListQueues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ListQueues.html)dans la référence de l'API Amazon Simple Queue Service
+  [DeleteQueues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteQueues.html)dans la référence de l'API Amazon Simple Queue Service

# Envoyer, recevoir et supprimer des messages Amazon SQS
<a name="examples-sqs-messages"></a>

Les messages sont toujours délivrés à l'aide d'une file d'[attente SQS.](examples-sqs-message-queues.md) Ces exemples C\$1\$1 vous montrent comment utiliser le AWS SDK pour C\$1\$1 pour envoyer, recevoir et supprimer des messages Amazon SQS des files d'attente SQS.

## Conditions préalables
<a name="codeExamplePrereq"></a>

Avant de commencer, nous vous recommandons de lire [Commencer à utiliser le AWS SDK pour C\$1\$1](getting-started.md). 

Téléchargez l'exemple de code et créez la solution comme décrit dans[Commencer par des exemples de code](getting-started-code-examples.md). 

Pour exécuter les exemples, le profil utilisateur que votre code utilise pour effectuer les demandes doit disposer des autorisations appropriées AWS (pour le service et l'action). Pour plus d'informations, consultez la section [Fourniture AWS d'informations d'identification](credentials.md).

## Envoi d'un message
<a name="sqs-message-send"></a>

Vous pouvez ajouter un message unique à une file d'attente Amazon SQS en appelant la fonction SQSClient class `SendMessage` member. Vous fournissez `SendMessage` un [SendMessageRequest](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_send_message_request.html)objet contenant l'[URL](examples-sqs-message-queues.md#sqs-get-queue-url) de la file d'attente, le corps du message et une valeur de délai facultative (en secondes).

 **Comprend** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/SendMessageRequest.h>
#include <iostream>
```

 **Code** 

```
    Aws::SQS::SQSClient sqsClient(clientConfiguration);

    Aws::SQS::Model::SendMessageRequest request;
    request.SetQueueUrl(queueUrl);
    request.SetMessageBody(messageBody);

    const Aws::SQS::Model::SendMessageOutcome outcome = sqsClient.SendMessage(request);
    if (outcome.IsSuccess()) {
        std::cout << "Successfully sent message to " << queueUrl <<
                  std::endl;
    }
    else {
        std::cerr << "Error sending message to " << queueUrl << ": " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
```

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/send_message.cpp).

## Réception de messages
<a name="sqs-messages-receive"></a>

Récupérez tous les messages actuellement dans la file d'attente en appelant la fonction `ReceiveMessage` membre de SQSClient classe et en lui transmettant l'URL de la file d'attente. Les messages sont renvoyés sous la forme d'une liste d'objets [Message](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_message.html).

 **Comprend** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/ReceiveMessageRequest.h>
#include <iostream>
```

 **Code** 

```
    Aws::SQS::SQSClient sqsClient(clientConfiguration);

    Aws::SQS::Model::ReceiveMessageRequest request;
    request.SetQueueUrl(queueUrl);
    request.SetMaxNumberOfMessages(1);

    const Aws::SQS::Model::ReceiveMessageOutcome outcome = sqsClient.ReceiveMessage(
            request);
    if (outcome.IsSuccess()) {

        const Aws::Vector<Aws::SQS::Model::Message> &messages =
                outcome.GetResult().GetMessages();
        if (!messages.empty()) {
            const Aws::SQS::Model::Message &message = messages[0];
            std::cout << "Received message:" << std::endl;
            std::cout << "  MessageId: " << message.GetMessageId() << std::endl;
            std::cout << "  ReceiptHandle: " << message.GetReceiptHandle() << std::endl;
            std::cout << "  Body: " << message.GetBody() << std::endl << std::endl;
        }
        else {
            std::cout << "No messages received from queue " << queueUrl <<
                      std::endl;

        }
    }
    else {
        std::cerr << "Error receiving message from queue " << queueUrl << ": "
                  << outcome.GetError().GetMessage() << std::endl;
    }
```

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/receive_message.cpp).

### Suppression des messages après réception
<a name="sqs-messages-delete"></a>

Après avoir reçu un message et traité son contenu, supprimez-le de la file d'attente en envoyant le descripteur de réception du message et l'URL de la file d'attente à la fonction `DeleteMessage` membre de la SQSClient classe.

 **Comprend** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/DeleteMessageRequest.h>
#include <iostream>
```

 **Code** 

```
    Aws::SQS::Model::DeleteMessageRequest request;
    request.SetQueueUrl(queueUrl);
    request.SetReceiptHandle(messageReceiptHandle);

    const Aws::SQS::Model::DeleteMessageOutcome outcome = sqsClient.DeleteMessage(
            request);
    if (outcome.IsSuccess()) {
        std::cout << "Successfully deleted message from queue " << queueUrl
                  << std::endl;
    }
    else {
        std::cerr << "Error deleting message from queue " << queueUrl << ": " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
```

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/receive_message.cpp).

## Plus d'informations
<a name="more-info"></a>
+  [Comment fonctionnent les files d'attente Amazon SQS dans le guide](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-how-it-works.html) du développeur Amazon Simple Queue Service
+  [SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)dans la référence de l'API Amazon Simple Queue Service
+  [SendMessageBatch](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessageBatch.html)dans la référence de l'API Amazon Simple Queue Service
+  [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)dans la référence de l'API Amazon Simple Queue Service
+  [DeleteMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html)dans la référence de l'API Amazon Simple Queue Service

# Activation des longues interrogations pour les files d'attente de messages Amazon SQS
<a name="examples-sqs-long-polling"></a>

Amazon SQS utilise des interrogations *courtes par* défaut, interrogeant uniquement un sous-ensemble des serveurs, sur la base d'une distribution aléatoire pondérée, afin de déterminer si des messages peuvent être inclus dans la réponse.

Les longs sondages permettent de réduire le coût d'utilisation d'Amazon SQS en réduisant le nombre de réponses vides lorsqu'aucun message n'est disponible pour répondre à une ReceiveMessage demande envoyée à une file d'attente Amazon SQS et en éliminant les fausses réponses vides. Vous pouvez définir une fréquence d'attente active de longue durée de *1 à 20 secondes*.

## Conditions préalables
<a name="codeExamplePrereq"></a>

Avant de commencer, nous vous recommandons de lire [Commencer à utiliser le AWS SDK pour C\$1\$1](getting-started.md). 

Téléchargez l'exemple de code et créez la solution comme décrit dans[Commencer par des exemples de code](getting-started-code-examples.md). 

Pour exécuter les exemples, le profil utilisateur que votre code utilise pour effectuer les demandes doit disposer des autorisations appropriées AWS (pour le service et l'action). Pour plus d'informations, consultez la section [Fourniture AWS d'informations d'identification](credentials.md).

## Activer les longs sondages lors de la création d'une file d'attente
<a name="sqs-long-polling-create-queue"></a>

Pour permettre un long sondage lors de la création d'une file d'attente Amazon SQS, définissez l'`ReceiveMessageWaitTimeSeconds`attribut sur l'[CreateQueueRequest](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_create_queue_request.html)objet avant d'appeler la fonction membre de la SQSClient classe. `CreateQueue`

 **Comprend** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/CreateQueueRequest.h>
#include <iostream>
```

 **Code** 

```
    Aws::SQS::SQSClient sqsClient(clientConfiguration);

    Aws::SQS::Model::CreateQueueRequest request;
    request.SetQueueName(queueName);
    request.AddAttributes(
            Aws::SQS::Model::QueueAttributeName::ReceiveMessageWaitTimeSeconds,
            pollTimeSeconds);

    const Aws::SQS::Model::CreateQueueOutcome outcome = sqsClient.CreateQueue(request);
    if (outcome.IsSuccess()) {
        std::cout << "Successfully created queue " << queueName <<
                  std::endl;
    }
    else {
        std::cout << "Error creating queue " << queueName << ": " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
```

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/long_polling_on_create_queue.cpp).

## Activation de l'attente active de longue durée sur une file d'attente existante
<a name="sqs-long-polling-existing-queue"></a>

En plus de permettre un long sondage lors de la création d'une file d'attente, vous pouvez également l'activer sur une file d'attente existante en activant la `ReceiveMessageWaitTimeSeconds` fonction `SetQueueAttributes` membre de la SQSClient classe [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)avant d'appeler.

 **Comprend** 

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

 **Code** 

```
    Aws::SQS::SQSClient sqsClient(clientConfiguration);

    Aws::SQS::Model::SetQueueAttributesRequest request;
    request.SetQueueUrl(queueURL);
    request.AddAttributes(
            Aws::SQS::Model::QueueAttributeName::ReceiveMessageWaitTimeSeconds,
            pollTimeSeconds);

    const Aws::SQS::Model::SetQueueAttributesOutcome outcome = sqsClient.SetQueueAttributes(
            request);
    if (outcome.IsSuccess()) {
        std::cout << "Successfully updated long polling time for queue " <<
                  queueURL << " to " << pollTimeSeconds << std::endl;
    }
    else {
        std::cout << "Error updating long polling time for queue " <<
                  queueURL << ": " << outcome.GetError().GetMessage() <<
                  std::endl;
    }
```

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/long_polling_on_existing_queue.cpp).

## Activation de l'attente active de longue durée à la réception de messages
<a name="sqs-long-polling-receive-message"></a>

Vous pouvez activer les longues interrogations lors de la réception d'un message en réglant le temps d'attente en secondes [ReceiveMessageRequest](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_receive_message_request.html)que vous indiquez à la fonction ReceiveMessage membre SQSClient de la classe.

**Note**  
Vous devez vous assurer que le délai d'expiration des demandes du AWS client est supérieur à la durée maximale du sondage (20 secondes) afin que vos `ReceiveMessage` demandes ne soient pas expirées en attendant le prochain événement du sondage \$1

 **Comprend** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/ReceiveMessageRequest.h>
```

 **Code** 

```
    Aws::SQS::SQSClient sqsClient(customConfiguration);

    Aws::SQS::Model::ReceiveMessageRequest request;
    request.SetQueueUrl(queueUrl);
    request.SetMaxNumberOfMessages(1);
    request.SetWaitTimeSeconds(waitTimeSeconds);

    auto outcome = sqsClient.ReceiveMessage(request);
    if (outcome.IsSuccess()) {
        const auto &messages = outcome.GetResult().GetMessages();
        if (messages.empty()) {
            std::cout << "No messages received from queue " << queueUrl <<
                      std::endl;
        }
        else {
            const auto &message = messages[0];
            std::cout << "Received message:" << std::endl;
            std::cout << "  MessageId: " << message.GetMessageId() << std::endl;
            std::cout << "  ReceiptHandle: " << message.GetReceiptHandle() << std::endl;
            std::cout << "  Body: " << message.GetBody() << std::endl << std::endl;
        }
    }
    else {
        std::cout << "Error receiving message from queue " << queueUrl << ": "
                  << outcome.GetError().GetMessage() << std::endl;
    }
```

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/long_polling_on_message_receipt.cpp).

## Plus d'informations
<a name="more-info"></a>
+  [Amazon SQS Long Solling](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-long-polling.html) dans le guide du développeur Amazon Simple Queue Service
+  [CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html)dans la référence de l'API Amazon Simple Queue Service
+  [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)dans la référence de l'API Amazon Simple Queue Service
+  [SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)dans la référence de l'API Amazon Simple Queue Service

# Configuration du délai de visibilité dans Amazon SQS
<a name="examples-sqs-visibility-timeout"></a>

Lorsqu'un message est reçu dans Amazon SQS, il reste dans la file d'attente jusqu'à ce qu'il soit supprimé afin de garantir sa réception. Un message qui a été reçu, mais pas supprimé, est disponible dans les demandes suivantes après un *délai de visibilité* donné afin d'empêcher que le message ne soit reçu plusieurs fois avant d'être traité et supprimé.

Lorsque vous utilisez les [files d'attente standard](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/standard-queues.html), le délai de visibilité n'est pas une garantie que vous ne recevrez pas deux fois un même message. Si vous utilisez une file d'attente standard, assurez-vous que votre code gère le cas où le même message est remis plusieurs fois.

## Conditions préalables
<a name="codeExamplePrereq"></a>

Avant de commencer, nous vous recommandons de lire [Commencer à utiliser le AWS SDK pour C\$1\$1](getting-started.md). 

Téléchargez l'exemple de code et créez la solution comme décrit dans[Commencer par des exemples de code](getting-started-code-examples.md). 

Pour exécuter les exemples, le profil utilisateur que votre code utilise pour effectuer les demandes doit disposer des autorisations appropriées AWS (pour le service et l'action). Pour plus d'informations, consultez la section [Fourniture AWS d'informations d'identification](credentials.md).

## Définissez le délai de visibilité des messages à la réception du message
<a name="sqs-visibility-timeout-receipt"></a>

Lorsque vous avez reçu un message, vous pouvez modifier son délai de visibilité en transmettant son identifiant de réception à la fonction `ChangeMessageVisibility` membre de la SQSClient classe. [ChangeMessageVisibilityRequest](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_change_message_visibility_request.html)

 **Comprend** 

```
#include <aws/core/Aws.h>
#include <aws/sqs/SQSClient.h>
#include <aws/sqs/model/ChangeMessageVisibilityRequest.h>
#include <aws/sqs/model/ReceiveMessageRequest.h>
#include <iostream>
```

 **Code** 

```
    Aws::SQS::Model::ChangeMessageVisibilityRequest request;
    request.SetQueueUrl(queue_url);
    request.SetReceiptHandle(messageReceiptHandle);
    request.SetVisibilityTimeout(visibilityTimeoutSeconds);

    auto outcome = sqsClient.ChangeMessageVisibility(request);
    if (outcome.IsSuccess()) {
        std::cout << "Successfully changed visibility of message " <<
                  messageReceiptHandle << " from queue " << queue_url << std::endl;
    }
    else {
        std::cout << "Error changing visibility of message from queue "
                  << queue_url << ": " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
```

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/change_message_visibility.cpp).

## Plus d'informations
<a name="more-info"></a>
+  [Délai de visibilité indiqué](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html) dans le guide du développeur du service Amazon Simple Queue
+  [SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)dans la référence de l'API Amazon Simple Queue Service
+  [GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html)dans la référence de l'API Amazon Simple Queue Service
+  [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)dans la référence de l'API Amazon Simple Queue Service
+  [ChangeMessageVisibility](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ChangeMessageVisibility.html)dans la référence de l'API Amazon Simple Queue Service
+  [ChangeMessageVisibilityBatch](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ChangeMessageVisibilityBatch.html)dans la référence de l'API Amazon Simple Queue Service

# Utilisation des files d'attente de lettres mortes dans Amazon SQS
<a name="examples-sqs-dead-letter-queues"></a>

Amazon SQS fournit une assistance pour les files d'attente *lettre morte*. Une file d'attente de lettres mortes est une file que d'autres files d'attente peuvent cibler pour les messages qui ne peuvent pas être traités correctement. Vous pouvez mettre de côté et isoler ces messages dans la file d'attente de lettres mortes pour déterminer pourquoi leur traitement a échoué.

Pour créer une file d'attente lettre morte, vous devez d'abord créer une *politique de redrive*, puis définir cette politique dans les attributs de la file d'attente.

**Important**  
Une file d'attente en lettres mortes doit être du même type (FIFO ou standard) que la file source. Il doit également être créé à l'aide de la même file d'attente Compte AWS et de Région AWS celle de la file source.

## Conditions préalables
<a name="codeExamplePrereq"></a>

Avant de commencer, nous vous recommandons de lire [Commencer à utiliser le AWS SDK pour C\$1\$1](getting-started.md). 

Téléchargez l'exemple de code et créez la solution comme décrit dans[Commencer par des exemples de code](getting-started-code-examples.md). 

Pour exécuter les exemples, le profil utilisateur que votre code utilise pour effectuer les demandes doit disposer des autorisations appropriées AWS (pour le service et l'action). Pour plus d'informations, consultez la section [Fourniture AWS d'informations d'identification](credentials.md).

## Création d'une politique de redrive
<a name="sqs-dead-letter-queue-create-redrive-policy"></a>

Une politique de redrive est spécifiée en JSON. Pour le créer, vous pouvez utiliser la classe utilitaire JSON fournie avec le AWS SDK pour C\$1\$1.

Voici un exemple de fonction qui crée une politique de redrive en lui fournissant l'ARN de votre file d'attente de lettres mortes et le nombre maximum de fois que le message peut être reçu et non traité avant d'être envoyé dans la file d'attente de lettres mortes.

 **Comprend** 

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

 **Code** 

```
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();
}
```

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/dead_letter_queue.cpp).

## Définissez la politique de redrive sur votre file d'attente source
<a name="sqs-dead-letter-queue-set-redrive-policy"></a>

Pour terminer la configuration de votre file d'attente de lettres mortes, appelez la SQSClient fonction `SetQueueAttributes` membre de la classe avec un [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)objet dont vous avez défini l'`RedrivePolicy`attribut avec votre politique de redrive JSON.

 **Comprend** 

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

 **Code** 

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

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/dead_letter_queue.cpp).

## Plus d'informations
<a name="more-info"></a>
+  [Utilisation des files d'attente « Dead Letter » d'Amazon SQS dans le guide du développeur Amazon Simple Queue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html) Service
+  [SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)dans la référence de l'API Amazon Simple Queue Service