

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon SQS での可視性タイムアウトの設定
<a name="examples-sqs-visibility-timeout"></a>

Amazon SQS でメッセージを受信すると、確実な受信のために、そのメッセージは削除されるまでキューに残ります。削除されなかった受信メッセージは、指定された*可視性タイムアウト*の後に以降のリクエストで使用でき、メッセージが処理および削除される前に複数回受信することを防ぎます。

[標準キュー](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/standard-queues.html)を使用している場合、可視性タイムアウトはメッセージを 2 回受信しない保証にはなりません。標準キューを使用している場合は、同じメッセージが複数回配信されるケースをコードが処理できることを確認してください。

## 前提条件
<a name="codeExamplePrereq"></a>

作業を始める前に「[AWS SDK for C\$1\$1の開始方法](getting-started.md)」を読むことをお勧めします。

コード例をダウンロードし、「[コード例の開始方法](getting-started-code-examples.md)」の説明に従ってソリューションをビルドします。

例を実行するには、コードがリクエストを行うために使用するユーザープロファイルに適切なアクセス許可が必要です AWS ( サービスと アクション用）。詳細については、[AWS 「認証情報の提供](credentials.md)」を参照してください。

## メッセージ受信時の可視性タイムアウトを設定する
<a name="sqs-visibility-timeout-receipt"></a>

メッセージを受信したら、その受信ハンドルを [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) に指定し、そのリクエストを SQSClient クラスの `ChangeMessageVisibility` メンバー関数に渡すことで、可視性タイムアウトを変更できます。

 **を含む** 

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

 **コード** 

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

[完全な例](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sqs/change_message_visibility.cpp)をご覧ください。

## 詳細情報
<a name="more-info"></a>
+  Amazon Simple Queue Service デベロッパーガイドの「[可視性タイムアウト](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html)」
+  「Amazon Simple Queue Service API リファレンス」の「[SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html) 」
+  「Amazon Simple Queue Service API リファレンス」の「[GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html)」
+  「Amazon Simple Queue Service API リファレンス」の「[ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)」
+  「Amazon Simple Queue Service API リファレンス」の「[ChangeMessageVisibility](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ChangeMessageVisibility.html)」
+  「Amazon Simple Queue Service API リファレンス」の「[ChangeMessageVisibilityBatch](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ChangeMessageVisibilityBatch.html)」