我们已宣布
在 &SQS; 中使用死信队列
此 Node.js 代码示例演示:
如何使用队列接收和保留其他队列无法处理的消息。
情景
其他 (源) 队列可将无法成功处理的消息转到死信队列。您可以在死信队列中留出和隔离这些消息以确定其处理失败的原因。您必须单独配置将消息发送到死信队列的每个源队列。多个队列可将一个死信队列作为目标。
在此示例中,使用 Node.js 模块将消息路由到死信队列。该 Node.js 模块使用 SDK for JavaScript,通过 AWS.SQS
客户端类的以下方法来使用死信队列:
有关 Amazon SQS 死信队列的更多信息,请参阅《Amazon Simple Queue Service Developer Guide》中的 Using Amazon SQS Dead Letter Queues。
先决条件任务
要设置和运行此示例,您必须先完成以下任务:
安装 Node.js。有关安装 Node.js 的更多信息,请参阅 Node.js 网站
。 使用用户凭证创建共享配置文件。有关提供共享凭证文件的更多信息,请参阅从共享凭证文件加载 Node.js 中的凭证。
创建要用作死信队列的 Amazon SQS 队列。有关创建队列的示例,请参阅在 &SQS; 中使用队列。
配置源队列
创建充当死信队列的队列之后,必须配置其他队列以将未处理的消息路由到死信队列。要执行此操作,请指定重新驱动策略,标识用作死信队列的队列,以及单个消息的接收次数上限 (超过该次数后将消息路由到死信队列)。
创建文件名为 sqs_deadletterqueue.js
的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 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 上的此处