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 コード例は以下を示しています。

  • キューを使用して、キューが処理できない他のキューからのメッセージを受信して保持する方法。

シナリオ

デッドレターキューは、正常に処理できないメッセージの送信先として他の (送信元) キューが使用できるキューです。これらのメッセージは、処理が成功しなかった理由を判断するためにデッドレターキューに分離できます。デッドレターキューにメッセージを送信する各ソースキューを、個別に設定する必要があります。1 つのデッドレターキューを複数のキューの送信先とすることができます。

この例では、Node.js モジュールは、デッドレターキューにメッセージをルーティングするために使用されます。Node.js モジュールは SDK for JavaScript を使用し、AWS.SQS クライアントクラスの以下のメソッドを使用してデッドレターキューを使用します。

Amazon SQS デッドレターキューの詳細については、Amazon Simple Queue Service デベロッパーガイドの「Amazon SQS デッドレターキューの使用」を参照してください。

前提条件タスク

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

ソースキューの設定

デッドレターキューとして機能するキューの作成後は、デッドレターキューに未処理のメッセージをルーティングするように他のキューを設定する必要があります。これを行うには、デッドレターキューとして使用するキューと、デッドレターキューにルーティングされる前に個別のメッセージで受信する最大数を識別する再処理ポリシーを指定します。

sqs_deadletterqueue.js というファイル名で Node.js モジュールを作成します。前に示したように SDK を必ず設定します。Amazon SQS にアクセスするには、AWS.SQS サービスオブジェクトを作成します。キュー属性の更新に必要なパラメータを含む JSON オブジェクトを作成します。これには、デッドレターキューの ARN と maxReceiveCount の値の両方を指定する RedrivePolicy パラメータが含まれます。お客様が設定する 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: { RedrivePolicy: '{"deadLetterTargetArn":"DEAD_LETTER_QUEUE_ARN","maxReceiveCount":"10"}', }, QueueUrl: "SOURCE_QUEUE_URL", }; sqs.setQueueAttributes(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });

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

node sqs_deadletterqueue.js

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