我正在使用AWS SQS服务,目前正在尝试在队列中插入消息,并且我能够成功地插入第一条消息,但不能使用循环插入第二条消息.它返回相同的消息id和序列号。
MessageId:‘*-A 938-4fdc-abed-2 efb1e302a2a’,SequenceNumber:‘18848*2174575616’
以下是我正在使用的代码,有人能帮助我吗?
function insertMessage(data){
var sqs = new AWS.SQS({apiVersion: '2012-11-05'});
var params = {
MessageGroupId:data.messageGroupId,
MessageAttributes: {
"operation": {
DataType: "String",
StringValue: "insert_comment"
},
"comment_id": {
DataType: "Number",
StringValue: ""+data.comment_id+""
},
"timestamp": {
DataType: "String",
StringValue: ""+data.created_on+""
}
},
MessageBody: "New comment send ",
QueueUrl: "******"
};
//console.log(params);
sqs.sendMessage(params, function (err, data) {
if (err) {
console.log("Error", err);
callback(err);
} else {
console.log("Success", data.MessageId);
callback(data);
}
});
}我正在循环调用上面的函数。
每次我在回调中得到相同的MessageId和SequenceNumber响应。
{ ResponseMetadata: { RequestId: '762a88d4-****-5298-***-dd3cb27f7dc1' },
MD5OfMessageBody: '33d9f3a9*****bad5f72014ea836062',
MD5OfMessageAttributes: '*****af0c13771494a53fdb2',
MessageId: '*****-****-4fdc-abed-2efb1e302a2a',
SequenceNumber: '188******174575616'}
发布于 2019-09-04 09:07:50
显然,您没有添加MessageDeduplicationId属性,这表明启用了基于内容的复制。在这种情况下,将根据消息正文内容哈希自动为您生成MessageDeduplicationId。在这里,5分钟的重复间隔适用。如果要将消息添加到具有相同消息体的队列中,并在重复间隔内添加消息,则需要为每条消息生成唯一的MessageDeduplicationId。
如果多条消息相继发送到一个FIFO队列,每个队列都有一个不同的消息删除ID,则Amazon存储消息并确认传输。然后,可以按照发送消息的确切顺序接收和处理每条消息。
MessageDeduplicationId
用于删除发送的消息的标记。如果具有特定消息去重复ID的消息被成功发送,使用相同消息去重复ID发送的任何消息都会被成功地接受,但不会在5分钟的去重复间隔内传递。
去重叠配置
启用基于内容的去重复。这指示Amazon使用SHA-256散列来使用消息主体生成消息去重复ID,而不是使用消息的属性。
发布于 2019-09-03 08:24:39
第二条信息与第一条相同吗?不能将重复的消息放入FIFO队列。
https://stackoverflow.com/questions/57766473
复制相似问题