无法使用节点js

时间:2019-10-31 11:06:56

标签: node.js amazon-web-services amazon-sqs

我试图使用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数组?

1 个答案:

答案 0 :(得分:1)

该格式正确,我可以确认已经使用NodeJS SDK使用该格式成功发送了messageAttributes。

您可能会发现问题出在接收方。除非您在ReceiveMessageRequest的messageAttributeNames中指定要接收的属性,否则接收方不会获取属性。执行此操作的特定语法因语言SDK而异,并且在Java和Swift SDK上,您可以提供“ All”作为attributeNames以获取所有属性。对于我的Swift SDK,我使用receiveMsgRequest.messageAttributeNames = ["All"]指定了此名称,然后开始成功接收属性。

另外,请勿将message.attributes与接收方的message.messageAttributes混淆。前者用于系统属性。后者就是您想要的。