Amazon SQS メッセージキューの使用
メッセージキュー は、Amazon SQS でメッセージを確実に送信するために使用する論理コンテナです。キューには、標準と先入れ先出し (FIFO) の 2 種類があります。キューの詳細とキュータイプ間の相違点については、「Amazon Simple Queue Service デベロッパーガイド」を参照してください。
これらの C++ の例では、AWS SDK for C++ を使用して Amazon SQS キューの作成、一覧取得、削除、URL 取得を行う方法を示しています。
前提条件
作業を始める前に「AWS SDK for C++ の開始方法」を読むことをお勧めします。
コード例をダウンロードし、「コード例の開始方法」の説明に従ってソリューションをビルドします。
例を実行するには、リクエストに使用するユーザープロファイルに、AWS のサービスとアクションに対する適切なアクセス許可が付与されている必要があります。詳細については、「AWS 認証情報の提供」を参照してください。
キューの作成
SQSClient クラスの CreateQueue メンバー関数の使用時に、キューのパラメータを CreateQueueRequest オブジェクトで指定して渡します。
含まれるもの:
#include <aws/core/Aws.h> #include <aws/sqs/SQSClient.h> #include <aws/sqs/model/CreateQueueRequest.h> #include <iostream>
コード
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; }
完全な例
キューを一覧表示する
アカウントの Amazon SQS キューを一覧表示するには、SQSClient クラスの ListQueues メンバー関数の呼び出しで、ListQueuesRequest オブジェクトを渡します。
含まれるもの:
#include <aws/core/Aws.h> #include <aws/sqs/SQSClient.h> #include <aws/sqs/model/ListQueuesRequest.h> #include <iostream>
コード
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; }
完全な例
キューの URL を取得する
既存の Amazon SQS キューの URL を取得するには、SQSClient クラスの GetQueueUrl メンバー関数を呼び出します。
含まれるもの:
#include <aws/core/Aws.h> #include <aws/sqs/SQSClient.h> #include <aws/sqs/model/GetQueueUrlRequest.h> #include <iostream>
コード
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; }
完全な例
キューの削除
SQSClient クラスの DeleteQueue メンバー関数に URL を渡します。
含まれるもの:
#include <aws/core/Aws.h> #include <aws/core/client/DefaultRetryStrategy.h> #include <aws/sqs/SQSClient.h> #include <aws/sqs/model/DeleteQueueRequest.h> #include <iostream>
コード
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; }
完全な例
詳細
-
「Amazon Simple Queue Service デベロッパーガイド」の「Amazon SQS キューの仕組み」
-
「Amazon Simple Queue Service API リファレンス」の「CreateQueue」
-
「Amazon Simple Queue Service API リファレンス」の「GetQueueUrl」
-
「Amazon Simple Queue Service API リファレンス」の「ListQueues」
-
「Amazon Simple Queue Service API リファレンス」の「DeleteQueues」