我试图使用Node Js向AWS SQS发送消息,为此我安装了npm软件包aws-sdk。我需要发送一个json数组作为message属性,其格式为
{"Header": {"OrganizationName": "testOrg","TYPE": "TestMsg", "UserName": "TestUser"}}
但是这种格式不允许我发送消息
var 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
// MessageId: "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);
}
如何在Message Attribute中发送JSON数组?
答案 0 :(得分:1)
该格式正确,我可以确认已经使用NodeJS SDK使用该格式成功发送了messageAttributes。
您可能会发现问题出在接收方。除非您在ReceiveMessageRequest的messageAttributeNames中指定要接收的属性,否则接收方不会获取属性。执行此操作的特定语法因语言SDK而异,并且在Java和Swift SDK上,您可以提供“ All”作为attributeNames以获取所有属性。对于我的Swift SDK,我使用receiveMsgRequest.messageAttributeNames = ["All"]
指定了此名称,然后开始成功接收属性。
另外,请勿将message.attributes
与接收方的message.messageAttributes
混淆。前者用于系统属性。后者就是您想要的。