Amazon SQS でのメッセージの送受信 - AWS SDK for JavaScript

AWS SDK for JavaScript v2 の近日発表 end-of-support しました。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 デベロッパーガイドAmazon SQS キューへのメッセージの送信および Amazon SQS キューからのメッセージの受信および削除を参照してください。

前提条件タスク

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

キューへのメッセージ送信

sqs_sendmessage.js というファイル名で Node.js モジュールを作成します。前に示したように SDK を必ず設定します。Amazon SQS にアクセスするには、AWS.SQS サービスオブジェクトを作成します。メッセージに必要なパラメータを含む JSON オブジェクトを作成します。これには、このメッセージの送信先となるキューの URL を含める必要があります。この例で、メッセージは、フィクションのベストセラーの一覧にある本についての詳細 (タイトル、著者、および一覧にある週の数) を提供します。

sendMessage メソッドを呼び出します。コールバックは、メッセージの一意の ID を返します。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create an SQS service object var sqs = new AWS.SQS({ apiVersion: "2012-11-05" }); var params = { // Remove DelaySeconds parameter and value for FIFO queues DelaySeconds: 10, MessageAttributes: { Title: { DataType: "String", StringValue: "The Whistler", }, Author: { DataType: "String", StringValue: "John Grisham", }, WeeksOn: { DataType: "Number", StringValue: "6", }, }, MessageBody: "Information about current NY Times fiction bestseller for week of 12/11/2016.", // MessageDeduplicationId: "TheWhistler", // Required for FIFO queues // MessageGroupId: "Group1", // Required for FIFO queues QueueUrl: "SQS_QUEUE_URL", }; sqs.sendMessage(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.MessageId); } });

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

node sqs_sendmessage.js

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

キューからのメッセージの受信および削除

sqs_receivemessage.js というファイル名で Node.js モジュールを作成します。前に示したように SDK を必ず設定します。Amazon SQS にアクセスするには、AWS.SQS サービスオブジェクトを作成します。メッセージに必要なパラメータを含む JSON オブジェクトを作成します。これには、メッセージを受信するキューの URL を含める必要があります。この例では、パラメータはすべてのメッセージ属性の受信、および 10 以下のメッセージの受信を指定します。

receiveMessage メソッドを呼び出します。コールバックは Message オブジェクトの配列を返します。その配列から、そのメッセージを後で削除するために使用する各メッセージについての ReceiptHandle を取得できます。メッセージの削除に必要なパラメータを含む別の JSON オブジェクトを作成します。これは、キューの URL と ReceiptHandle の値です。受信したメッセージを削除するには、deleteMessage メソッドを呼び出します。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create an SQS service object var sqs = new AWS.SQS({ apiVersion: "2012-11-05" }); var queueURL = "SQS_QUEUE_URL"; var params = { AttributeNames: ["SentTimestamp"], MaxNumberOfMessages: 10, MessageAttributeNames: ["All"], QueueUrl: queueURL, VisibilityTimeout: 20, WaitTimeSeconds: 0, }; sqs.receiveMessage(params, function (err, data) { if (err) { console.log("Receive Error", err); } else if (data.Messages) { var deleteParams = { QueueUrl: queueURL, ReceiptHandle: data.Messages[0].ReceiptHandle, }; sqs.deleteMessage(deleteParams, function (err, data) { if (err) { console.log("Delete Error", err); } else { console.log("Message Deleted", data); } }); } });

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

node sqs_receivemessage.js

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