AWS SDK for JavaScript v2 のサポート終了が間近に迫っていることが発表
Amazon SQS でのロングポーリングの有効化
この Node.js コード例は以下を示しています。
新しく作成されたキューでロングポーリングを有効にする方法
既存のキューでロングポーリングを有効にする方法
メッセージの受信時にロングポーリングを有効にする方法
シナリオ
ロングポーリングは、レスポンスの送信前にメッセージがキューで使用可能になるまで Amazon SQS が指定された時間待機できるようにすることで、空のレスポンス数を削減します。また、ロングポーリングでは、サーバーをサンプリングするのではなくすべてのサーバーをクエリすることによって、偽の空のレスポンスが排除されます。ロングポーリングを有効にするには、受信したメッセージについてゼロ以外の待機時間を指定する必要があります。これを行うには、キューの ReceiveMessageWaitTimeSeconds
パラメータを設定するか、または受信時のメッセージの WaitTimeSeconds
パラメータを設定します。
この例では、一連の Node.js モジュールはロングポーリングの有効化に使用されます。Node.js モジュールは SDK for JavaScript を使用して、AWS.SQS
クライアントクラスの以下のメソッドを使用してロングポーリングを有効にします。
Amazon SQS ロングポーリングの詳細については、Amazon Simple Queue Service デベロッパーガイドのロングポーリングを参照してください。
前提条件タスク
この例をセットアップして実行するには、まず次のタスクを完了する必要があります。
Node.js をインストールします。Node.js をインストールする方法の詳細については、Node.js ウェブサイト
を参照してください。 ユーザーの認証情報を使用して、共有設定ファイルを作成します。共有認証情報ファイルの提供の詳細については、共有認証情報ファイルから Node.js に認証情報をロードする を参照してください。
キュー作成時のロングポーリングの有効化
sqs_longpolling_createqueue.js
というファイル名で Node.js モジュールを作成します。前に示したように SDK を必ず設定します。Amazon SQS にアクセスするには、AWS.SQS
サービスオブジェクトを作成します。キューの作成に必要なパラメータを含む JSON オブジェクトを作成します。これには、ReceiveMessageWaitTimeSeconds
パラメータのゼロ以外の値が含まれます。createQueue
メソッドを呼び出します。これで、キューに対してロングポーリングが有効になります。
// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the SQS service object var sqs = new AWS.SQS({ apiVersion: "2012-11-05" }); var params = { QueueName: "SQS_QUEUE_NAME", Attributes: { ReceiveMessageWaitTimeSeconds: "20", }, }; sqs.createQueue(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.QueueUrl); } });
この例を実行するには、コマンドラインに次のように入力します。
node sqs_longpolling_createqueue.js
このサンプルコードは、このGitHub
既存のキューでロングポーリングを有効にする
sqs_longpolling_existingqueue.js
というファイル名で Node.js モジュールを作成します。前に示したように SDK を必ず設定します。Amazon Simple Queue Service にアクセスするには、AWS.SQS
サービスオブジェクトを作成します。キューの属性を設定するために必要なパラメータを含む JSON オブジェクトを作成します。これには、ReceiveMessageWaitTimeSeconds
パラメータのゼロ以外の値と、キューの URL が含まれます。setQueueAttributes
メソッドを呼び出します。これで、キューに対してロングポーリングが有効になります。
// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the SQS service object var sqs = new AWS.SQS({ apiVersion: "2012-11-05" }); var params = { Attributes: { ReceiveMessageWaitTimeSeconds: "20", }, QueueUrl: "SQS_QUEUE_URL", }; sqs.setQueueAttributes(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });
この例を実行するには、コマンドラインに次のように入力します。
node sqs_longpolling_existingqueue.js
このサンプルコードは、このGitHub
メッセージ受信時のロングポーリングを有効にする
sqs_longpolling_receivemessage.js
というファイル名で Node.js モジュールを作成します。前に示したように SDK を必ず設定します。Amazon Simple Queue Service にアクセスするには、AWS.SQS
サービスオブジェクトを作成します。メッセージの受信に必要なパラメータを含む JSON オブジェクトを作成します。これには、WaitTimeSeconds
パラメータのゼロ以外の値と、キューの URL が含まれます。receiveMessage
メソッドを呼び出します。
// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the SQS service object var sqs = new AWS.SQS({ apiVersion: "2012-11-05" }); var queueURL = "SQS_QUEUE_URL"; var params = { AttributeNames: ["SentTimestamp"], MaxNumberOfMessages: 1, MessageAttributeNames: ["All"], QueueUrl: queueURL, WaitTimeSeconds: 20, }; sqs.receiveMessage(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });
この例を実行するには、コマンドラインに次のように入力します。
node sqs_longpolling_receivemessage.js
このサンプルコードは、このGitHub