翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon SQS での可視性タイムアウトの設定
Amazon SQS でメッセージを受信すると、確実な受信のために、そのメッセージは削除されるまでキューに残ります。削除されなかった受信メッセージは、指定された可視性タイムアウトの後に以降のリクエストで使用でき、メッセージが処理および削除される前に複数回受信することを防ぎます。
標準キューを使用している場合、可視性タイムアウトはメッセージを 2 回受信しない保証にはなりません。標準キューを使用している場合は、同じメッセージが複数回配信されるケースをコードが処理できることを確認してください。
前提条件
作業を始める前に「AWS SDK for C++ の開始方法」を読むことをお勧めします。
コード例をダウンロードし、「コード例の開始方法」の説明に従ってソリューションをビルドします。
例を実行するには、リクエストに使用するユーザープロファイルに、AWS のサービスとアクションに対する適切なアクセス許可が付与されている必要があります。詳細については、「AWS 認証情報の提供」を参照してください。
メッセージ受信時の可視性タイムアウトを設定する
メッセージを受信したら、その受信ハンドルを ChangeMessageVisibilityRequest に指定し、そのリクエストを 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; }
完全な例
詳細
-
Amazon Simple Queue Service デベロッパーガイドの「可視性タイムアウト」
-
「Amazon Simple Queue Service API リファレンス」の「SetQueueAttributes 」
-
「Amazon Simple Queue Service API リファレンス」の「GetQueueAttributes」
-
「Amazon Simple Queue Service API リファレンス」の「ReceiveMessage」
-
「Amazon Simple Queue Service API リファレンス」の「ChangeMessageVisibility」
-
「Amazon Simple Queue Service API リファレンス」の「ChangeMessageVisibilityBatch」