我们已宣布
在 Amazon SQS 中发送和接收消息
此 Node.js 代码示例演示:
如何在队列中发送消息。
如何在队列中接收消息。
如何在队列中删除消息。
情景
在本示例中,使用了一系列 Node.js 模块来发送和接收消息。这些 Node.js 模块使用 SDK for JavaScript,通过 AWS.SQS
客户端类的以下方法来发送和接收消息:
有关 Amazon SQS 消息的更多信息,请参阅《Amazon Simple Queue Service Developer Guide》中的 Sending a Message to an Amazon SQS Queue 和 Receiving and Deleting a Message from an Amazon SQS Queue。
先决条件任务
要设置和运行此示例,您必须先完成以下任务:
安装 Node.js。有关安装 Node.js 的更多信息,请参阅 Node.js 网站
。 使用用户凭证创建共享配置文件。有关提供共享凭证文件的更多信息,请参阅从共享凭证文件加载 Node.js 中的凭证。
创建 Amazon SQS 队列。有关创建队列的示例,请参阅在 &SQS; 中使用队列。
向队列发送消息
创建文件名为 sqs_sendmessage.js
的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 Amazon SQS,请创建 AWS.SQS
服务对象。创建一个包含消息所需的参数的 JSON 对象,其中包括您要将此消息发送到的队列的 URL。在本示例中,消息提供了最畅销科幻小说排行榜中某本书籍的详细信息,包括书名、作者以及上榜周数。
调用 sendMessage
方法。回调函数将返回消息的唯一 ID。
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });
// Create an SQS service object
var sqs = new AWS.SQS({ apiVersion: "2012-11-05" });
var params = {
// Remove DelaySeconds parameter and value for FIFO queues
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.sendMessage(params, function (err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data.MessageId);
}
});
要运行示例,请在命令行中键入以下内容。
node sqs_sendmessage.js
此示例代码可在 GitHub 上的此处
接收和删除来自队列的消息
创建文件名为 sqs_receivemessage.js
的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 Amazon SQS,请创建 AWS.SQS
服务对象。创建一个包含消息所需的参数的 JSON 对象,其中包括您要用于接收消息的队列的 URL。在本示例中,参数指定所有消息属性的收件人,以及不超过 10 条消息的收件人。
调用 receiveMessage
方法。回调函数将返回 Message
对象的数组,从中您可以检索各个消息的 ReceiptHandle
,您可在以后用来删除该消息。创建包含删除消息所需参数的另一个 JSON 对象,这些参数为队列的 URL 和 ReceiptHandle
值。调用 deleteMessage
方法以删除您收到的消息。
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });
// Create an SQS service object
var sqs = new AWS.SQS({ apiVersion: "2012-11-05" });
var queueURL = "SQS_QUEUE_URL";
var params = {
AttributeNames: ["SentTimestamp"],
MaxNumberOfMessages: 10,
MessageAttributeNames: ["All"],
QueueUrl: queueURL,
VisibilityTimeout: 20,
WaitTimeSeconds: 0,
};
sqs.receiveMessage(params, function (err, data) {
if (err) {
console.log("Receive Error", err);
} else if (data.Messages) {
var deleteParams = {
QueueUrl: queueURL,
ReceiptHandle: data.Messages[0].ReceiptHandle,
};
sqs.deleteMessage(deleteParams, function (err, data) {
if (err) {
console.log("Delete Error", err);
} else {
console.log("Message Deleted", data);
}
});
}
});
要运行示例,请在命令行中键入以下内容。
node sqs_receivemessage.js
此示例代码可在 GitHub 上的此处