sqs 在接收消息时不给我 MessageAttributes
sqs does not give me MessageAttributes when receiving message
我写了以下内容API来接收消息:
app.get('/receive', function(req, res) {
var params = {
QueueUrl: queueUrl,
VisibilityTimeout: 600
};
sqs.receiveMessage(params, function(err, data) {
if (err) {
res.send(err);
} else {
console.log('data is ' + JSON.stringify(data));
res.send(data);
}
});
});
我得到的回复如下:
{
"ResponseMetadata": {
"RequestId": "id"
},
"Messages": [
{
"MessageId": "id",
"ReceiptHandle": "handle",
"MD5OfBody": "body",
"Body": "body"
}
]
}
。
API发送消息格式如下:
let params = {
MessageBody: object,
QueueUrl: process.env.queueUrl,
MessageAttributes:{
"Title":{
DataType:'String',
StringValue:'Item Id Array',
}
},
DelaySeconds: 0
}
sqs.send(params, (err, data) => {
console.log('------------the send message data is------------',err,data);
});
您必须在传递给 receiveMessage
函数的参数中告诉 SQS 您希望接收哪些属性。
因此在您的情况下 params
在 /receive
路由中的定义可能如下所示:
var params = {
QueueUrl: queueUrl,
VisibilityTimeout: 600,
MessageAttributeNames: ["All"],
};
查看以下链接了解更多信息:
- JavaScript SQS Example
- "Calling the receiveMessage operation" AWS JavaScript SDK doc
中的例子
- "MessageAttributeName.N"参数在AWS SQS API doc
接收所有 SQS 属性 -> .attributeNames(QueueAttributeName.ALL)
接收消息元数据属性 -> .messageAttributeNames("yourMessageAttributeName")
Java/Kotlin
val request = ReceiveMessageRequest.builder()
.queueUrl(url)
.messageAttributeNames("yourMessageAttributeName")
.attributeNames(QueueAttributeName.ALL)
.build()
val messages = client.receiveMessage(receiveMessageRequest).messages()
我写了以下内容API来接收消息:
app.get('/receive', function(req, res) {
var params = {
QueueUrl: queueUrl,
VisibilityTimeout: 600
};
sqs.receiveMessage(params, function(err, data) {
if (err) {
res.send(err);
} else {
console.log('data is ' + JSON.stringify(data));
res.send(data);
}
});
});
我得到的回复如下:
{
"ResponseMetadata": {
"RequestId": "id"
},
"Messages": [
{
"MessageId": "id",
"ReceiptHandle": "handle",
"MD5OfBody": "body",
"Body": "body"
}
]
}
。
API发送消息格式如下:
let params = {
MessageBody: object,
QueueUrl: process.env.queueUrl,
MessageAttributes:{
"Title":{
DataType:'String',
StringValue:'Item Id Array',
}
},
DelaySeconds: 0
}
sqs.send(params, (err, data) => {
console.log('------------the send message data is------------',err,data);
});
您必须在传递给 receiveMessage
函数的参数中告诉 SQS 您希望接收哪些属性。
因此在您的情况下 params
在 /receive
路由中的定义可能如下所示:
var params = {
QueueUrl: queueUrl,
VisibilityTimeout: 600,
MessageAttributeNames: ["All"],
};
查看以下链接了解更多信息:
- JavaScript SQS Example
- "Calling the receiveMessage operation" AWS JavaScript SDK doc 中的例子
- "MessageAttributeName.N"参数在AWS SQS API doc
接收所有 SQS 属性 -> .attributeNames(QueueAttributeName.ALL)
接收消息元数据属性 -> .messageAttributeNames("yourMessageAttributeName")
Java/Kotlin
val request = ReceiveMessageRequest.builder()
.queueUrl(url)
.messageAttributeNames("yourMessageAttributeName")
.attributeNames(QueueAttributeName.ALL)
.build()
val messages = client.receiveMessage(receiveMessageRequest).messages()