Amazon SQS での可視性タイムアウトの管理 - AWS SDK for JavaScript

AWS SDK for JavaScript v2 のサポート終了が間近に迫っていることが発表されています。AWS SDK for JavaScript v3 に移行することをお勧めします。日付、その他の詳細、移行方法については、リンク先の発表内容を参照してください。

Amazon SQS での可視性タイムアウトの管理

JavaScript code example that applies to Node.js execution

この Node.js コード例は以下を示しています。

  • 表示されないキューが受信するメッセージの時間間隔を指定する方法。

シナリオ

この例では、Node.js モジュールは可視性タイムアウトを管理するために使用されます。Node.js モジュールは SDK for JavaScript を使用し、AWS.SQS クライアントクラスの以下のメソッドを使用して可視性タイムアウトを管理します。

Amazon SQS の可視性タイムアウトに関する詳細については、Amazon Simple Queue Service デベロッパーガイド可視性タイムアウトを参照してください。

前提条件タスク

この例をセットアップして実行するには、まず次のタスクを完了する必要があります。

可視性タイムアウトの変更

sqs_changingvisibility.js というファイル名で Node.js モジュールを作成します。前に示したように SDK を必ず設定します。Amazon Simple Queue Service にアクセスするには、AWS.SQS サービスオブジェクトを作成します。キューからメッセージを受信する。

キューからメッセージを受信したら、タイムアウトの設定に必要なパラメータを含む JSON オブジェクトを作成します。これには、メッセージを含むキューの URL、メッセージ受信時に返された ReceiptHandle、および新しいタイムアウト (秒単位) が含まれます。changeMessageVisibility メソッドを呼び出します。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region to us-west-2 AWS.config.update({ region: "us-west-2" }); // Create the SQS service object var sqs = new AWS.SQS({ apiVersion: "2012-11-05" }); var queueURL = "https://sqs.REGION.amazonaws.com/ACCOUNT-ID/QUEUE-NAME"; var params = { AttributeNames: ["SentTimestamp"], MaxNumberOfMessages: 1, MessageAttributeNames: ["All"], QueueUrl: queueURL, }; sqs.receiveMessage(params, function (err, data) { if (err) { console.log("Receive Error", err); } else { // Make sure we have a message if (data.Messages != null) { var visibilityParams = { QueueUrl: queueURL, ReceiptHandle: data.Messages[0].ReceiptHandle, VisibilityTimeout: 20, // 20 second timeout }; sqs.changeMessageVisibility(visibilityParams, function (err, data) { if (err) { console.log("Delete Error", err); } else { console.log("Timeout Changed", data); } }); } else { console.log("No messages to change"); } } });

この例を実行するには、コマンドラインに次のように入力します。

node sqs_changingvisibility.js

このサンプルコードは、このGitHubにあります。