帮助我们改进Amazon SDK for JavaScript版本 3 (V3) 文档,方法是使用反馈链接,或者在上创建议题或拉取请求GitHub
这些区域有:Amazon SDK for JavaScriptV3 API 参考指南详细描述了Amazon SDK for JavaScript版本 3 (V3)。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon SQS 中使用死信队列
此 Node.js 代码示例演示:
如何使用队列接收和保留其他队列无法处理的消息。
场景
其他(源)队列可将无法成功处理的消息转到死信队列。您可以在死信队列中留出和隔离这些消息以确定其处理失败的原因。您必须单独配置将消息发送到死信队列的每个源队列。多个队列可将一个死信队列作为目标。
在此示例中,使用 Node.js 模块将消息路由到死信队列。Node.js 模块使用适用于 JavaScript 的开发工具包通过SQS
客户端类:
有关 Amazon SQS 死信队列的更多信息,请参阅。使用 Amazon SQS 死信队列中的Amazon Simple Queue Service 开发者指南.
先决条件任
要设置和运行此示例,您必须先完成以下任务:
使用用户凭证创建共享配置文件。有关提供共享凭证文件的更多信息,请参阅从共享凭证文件加载 Node.js 中的凭证。
创建一个 Amazon SQS 队列以用作死信队列。有关创建队列的示例,请参阅在 Amazon SQS 中使用队列。
这些示例演示了如何使用 ECMASCRIPT6 (ES6) 导入/导出客户端服务对象和命令。
这需要 Node.js 版本 13.x 或更高版本。要下载并安装最新版本的 Node.js,请参阅。Node.js 下载。
. 如果您希望使用 CommonJS 语法,请参阅JavaScript ES6/常用JS 语法.
配置源队列
创建充当死信队列的队列之后,必须配置其他队列以将未处理的消息路由到死信队列。要执行此操作,请指定重新驱动策略,标识用作死信队列的队列,以及单个消息的接收次数上限 (超过该次数后将消息路由到死信队列)。
创建libs
创建文件名为的 Node.js 模块。sqsClient.js
. 将下面的代码复制并粘贴到其中,这将创建 Amazon SQS 客户端对象。Replace领域
和您的Amazon区域。
import { SQSClient } from "@aws-sdk/client-sqs"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SQS service object. const sqsClient = new SQSClient({ region: REGION }); export { sqsClient };
可以找到这个示例代码GitHub 上的这里
创建文件名为 sqs_deadletterqueue.js
的 Node.js 模块。请确保按前面所示配置开发工具包,其中包括下载所需的客户端和软件包。创建一个包含更新队列属性所需的参数的 JSON 对象,其中包括RedrivePolicy
指定死信队列 ARN 和值的参数。maxReceiveCount
. 另请指定您要配置的 URL 源队列。调用 SetQueueAttributesCommand
方法。
ReplaceSQS_QUEUE_URL
使用 SQS 队列的 URL,以及DEAD_LETTER_QUEUE_ARN
用死信队列的 ARN 进行操作。
// Import required AWS SDK clients and commands for Node.js import { SetQueueAttributesCommand } from "@aws-sdk/client-sqs"; import { sqsClient } from "./libs/sqsClient.js"; // Set the parameters var params = { Attributes: { RedrivePolicy: '{"deadLetterTargetArn":"DEAD_LETTER_QUEUE_ARN",' + '"maxReceiveCount":"10"}', //DEAD_LETTER_QUEUE_ARN }, QueueUrl: "SQS_QUEUE_URL", //SQS_QUEUE_URL }; const run = async () => { try { const data = await sqsClient.send(new SetQueueAttributesCommand(params)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; run();
要运行该示例,请在命令提示符处输入以下内容。
node sqs_deadletterqueue.js // If you prefer JavaScript, enter 'sqs_deadletterqueue.js'
可以找到这个示例代码GitHub 上的这里