SQS 消息接收器中缺少 MessageAttributes 属性

Missing MessageAttributes property in SQS message receiver

我看到的都是这样的数据:

    {
      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,条目:v}, cb);

条目是一个数组:

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

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

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

有人知道为什么当我从队列中读取时 MessageAttributes 没有显示,即使它们可能被推入队列?

在您的 receiveMessage conf 中,您需要包含 MessageAttributeNames 并为其提供属性名称列表或 All。看起来您正在使用 javascript,因此您需要查看 Javascript SDK 文档以了解 receiveMessage https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html#receiveMessage-property