首页 > 解决方案 > SQS 消息接收器中缺少 MessageAttributes 属性

问题描述

我看到的只是这种类型的数据:

    {
      MessageId: 'c604c772-8468-4cd2-8f3e-9b430ed52d92',
      ReceiptHandle: 'AQEBHyPYuNqFztvy9QNOHeLQg==',
      MD5OfBody: '096c6509c8628bde267adde2b105f4e4',
      Body: 'foobar'
    }

当我进行此调用以从队列中读取时:

const conf = {
  QueueUrl: 'https://sqs.us-west-2.amazonaws.com/920371/logging-q',
  WaitTimeSeconds: 19,  // max is 20 (off by one errors avoided!)
  MaxNumberOfMessages: 9  // max is 10 (off by one errors avoided!)
};

sqs.receiveMessage(conf, cb);

但是我在将消息放入队列时添加了 MessageAttributes:

sqs.sendMessageBatch({QueueUrl,Entries: v}, cb);

条目是一个数组:

{
    Id: uuid.v4(),
    MessageBody: 'foobar',
    MessageAttributes: {

      logStream: {
        StringValue: LOG_STREAM,
        DataType: 'String'
      },

      logGroup: {
        StringValue: LOG_GROUP,
        DataType: 'String'
      }
    }
  }

任何人都知道为什么当我从队列中读取时 MessageAttributes 没有出现,即使它们可能被推到队列中?

标签: amazon-web-servicesamazon-sqs

解决方案


在您的receiveMessageconf 中,您需要包含MessageAttributeNames并给它一个属性名称列表或All. 看起来您正在使用 javascript,因此您需要查看receiveMessage https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html#receiveMessage-property的 Javascript SDK 文档


推荐阅读