帮助我们改进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 SQS 队列中的消息中的Amazon Simple Queue Service 开发者指南.
先决条件任
要设置和运行此示例,您必须先完成以下任务:
-
设置项目环境以运行这些 Node TypeScript 示例,然后安装所需的Amazon SDK for JavaScript和第三方模块。按照上的说明操作GitHub
. 使用用户凭证创建共享配置文件。有关提供共享凭证文件的更多信息,请参阅从共享凭证文件加载 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_sendmessage.js
的 Node.js 模块。请确保按前面所示配置开发工具包,其中包括下载所需的客户端和软件包。创建一个包含消息所需的参数的 JSON 对象,其中包括您要将此消息发送到的队列的 URL。在本示例中,消息提供了最畅销科幻小说排行榜中某本书籍的详细信息,包括书名、作者以及上榜周数。
调用 SendMessageCommand
方法。回调函数将返回消息的唯一 ID。
ReplaceSQS_QUEUE_URL
使用 SQS 队列的 URL。
// Import required AWS SDK clients and commands for Node.js import { SendMessageCommand } from "@aws-sdk/client-sqs"; import { sqsClient } from "./libs/sqsClient.js"; // Set the parameters const params = { 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_QUEUE_URL; e.g., 'https://sqs.REGION.amazonaws.com/ACCOUNT-ID/QUEUE-NAME' }; const run = async () => { try { const data = await sqsClient.send(new SendMessageCommand(params)); console.log("Success, message sent. MessageID:", data.MessageId); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; run();
要运行该示例,请在命令提示符处输入以下内容。
node sqs_sendmessage.js
可以找到这个示例代码GitHub 上的这里
从队列中接收和删除消息
创建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_receivemessage.js
的 Node.js 模块。请确保按前面所示配置开发工具包,其中包括下载所需的客户端和软件包。创建一个包含消息所需的参数的 JSON 对象,其中包括您要用于接收消息的队列的 URL。在本示例中,参数指定所有消息属性的收件人,以及不超过 10 条消息的收件人。
调用 ReceiveMessageCommand
方法。回调函数将返回 Message
对象的数组,从中您可以检索各个消息的 ReceiptHandle
,您可在以后用来删除该消息。创建包含删除消息所需参数的另一个 JSON 对象,这些参数为队列的 URL 和 ReceiptHandle
值。调用 DeleteMessageCommand
方法以删除您收到的消息。
替换和SQS_QUEUE_URL
使用 SQS 队列的 URL。
// Import required AWS SDK clients and commands for Node.js import { ReceiveMessageCommand, DeleteMessageCommand, } from "@aws-sdk/client-sqs"; import { sqsClient } from "./libs/sqsClient.js"; // Set the parameters const queueURL = "SQS_QUEUE_URL"; //SQS_QUEUE_URL; e.g., 'https://sqs.REGION.amazonaws.com/ACCOUNT-ID/QUEUE-NAME' const params = { AttributeNames: ["SentTimestamp"], MaxNumberOfMessages: 10, MessageAttributeNames: ["All"], QueueUrl: queueURL, VisibilityTimeout: 20, WaitTimeSeconds: 0, }; const run = async () => { try { const data = await sqsClient.send(new ReceiveMessageCommand(params)); if (data.Messages) { var deleteParams = { QueueUrl: queueURL, ReceiptHandle: data.Messages[0].ReceiptHandle, }; try { const data = await sqsClient.send(new DeleteMessageCommand(deleteParams)); console.log("Message deleted", data); } catch (err) { console.log("Error", err); } } else { console.log("No messages to delete"); } return data; // For unit tests. } catch (err) { console.log("Receive Error", err); } }; run();
要运行该示例,请在命令提示符处输入以下内容。
node sqs_receivemessage.js
可以找到这个示例代码GitHub 上的这里