SQS的UnexpectedParameter MessageGroupId

时间:2016-11-20 13:41:44

标签: amazon-web-services amazon-sqs

我创建了一个FIFO SQS队列。 使用以下参数向队列发送消息时,

var params= {
    MessageBody: payload, 
    QueueUrl: sqsURL + body.device + ".fifo"
}
sqs.sendMessage(params, function(err, res) { 
    err ? callback(err) : callback(null, res);
});

我收到一条警告说"缺少参数messagegroupid" enter image description here

然后我继续将MessageGroupId添加到我的参数中。

var params= {
    MessageBody: payload,
    MessageGroupId: "posts",
    QueueUrl: sqsURL + body.device + ".fifo"
}
sqs.sendMessage(params, function(err, res) { 
    err ? callback(err) : callback(null, res);
});

enter image description here SQS然后抛出我" UnexpectedParameter:Unexpected key' MessageGroupId'在params"中找到。

我对这组冲突的指示感到困惑。 我在createQueue和sendMessage命令中使用相同的SDK区域。

var sqs= new aws.SQS({ region: "us-east-2" });

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