在 &SQS; 中使用死信队列 - 适用于 JavaScript 的 Amazon SDK
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

我们已宣布即将终止对 适用于 JavaScript 的 Amazon SDK v2 的支持。建议您迁移到 适用于 JavaScript 的 Amazon SDK v3。有关日期、其他详细信息以及如何迁移的信息,请参阅链接的公告。

在 &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 Developer Guide》中的 Using Amazon SQS Dead Letter Queues

先决条件任务

要设置和运行此示例,您必须先完成以下任务:

配置源队列

创建充当死信队列的队列之后,必须配置其他队列以将未处理的消息路由到死信队列。要执行此操作,请指定重新驱动策略,标识用作死信队列的队列,以及单个消息的接收次数上限 (超过该次数后将消息路由到死信队列)。

创建文件名为 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 上的此处找到。