amazon-web-services - 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 没有出现,即使它们可能被推到队列中?
解决方案
在您的receiveMessage
conf 中,您需要包含MessageAttributeNames
并给它一个属性名称列表或All
. 看起来您正在使用 javascript,因此您需要查看receiveMessage
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html#receiveMessage-property的 Javascript SDK 文档
推荐阅读
- java - HttpClientErrorException:Tomcat 中出现 401 未经授权的异常
- html - “for”子句在 XQuery 中是如何工作的?
- r - 基于传单圆圈绘制数据(闪亮)
- ruby-on-rails - 使用 Ruby 显示验证错误
- python - BrowserMob 代理 Python - 如何获取响应正文?
- spring-boot - Heroku Spring application.properties 文件
- erlang - Elixir:编译警告“表达式的结果被忽略”
- c - Vala:to_utf32_fast 方法的警告和分段错误
- actionscript-3 - 这怎么可能是输出?
- bash - Bitrise bash脚本-找不到命令