我创建了一个FIFO SQS队列。 使用以下参数向队列发送消息时,
var params= {
MessageBody: payload,
QueueUrl: sqsURL + body.device + ".fifo"
}
sqs.sendMessage(params, function(err, res) {
err ? callback(err) : callback(null, res);
});
我收到一条警告说"缺少参数messagegroupid"
然后我继续将MessageGroupId添加到我的参数中。
var params= {
MessageBody: payload,
MessageGroupId: "posts",
QueueUrl: sqsURL + body.device + ".fifo"
}
sqs.sendMessage(params, function(err, res) {
err ? callback(err) : callback(null, res);
});
SQS然后抛出我" UnexpectedParameter:Unexpected key' MessageGroupId'在params"中找到。
我对这组冲突的指示感到困惑。 我在createQueue和sendMessage命令中使用相同的SDK区域。
var sqs= new aws.SQS({ region: "us-east-2" });
答案 0 :(得分:2)
我使用Lambda遇到了同样的错误(因此找到了你的帖子)。想知道他们是否忘记刷新原生SDK,我上传了最新版本的SDK(2.7.7)和我的功能,错误就消失了。
由于上传SDK无法在Lambda中进行编辑,因此我将其删除并重新上传错误所返回的函数:(。
所以现在,如果你想将它与Lambda一起使用,你必须在你的部署包中包含SDK。
答案 1 :(得分:0)
您错过了传递“ MessageGroupId”参数的操作。您应该传递消息组ID作为参数。对于FIFO是强制性的。 请参考以下链接, https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#sendmessage