Amazon AWS SQS FIFO队列sendMessage问题

时间:2018-04-04 09:35:39

标签: amazon-web-services amazon-sqs fifo redundancy

使用带有sendMessage()的{​​{1}}功能发送邮件以防止重复。 但是,sendMessage函数始终返回true。换句话说,MessageDeduplicationId函数总是返回一个值,表示消息已成功发送到SQS,但该消息实际上不可用。

我更改字段' sendMessage'在数据库中基于sent_to_sqs返回值。

有人能帮助我吗?

1 个答案:

答案 0 :(得分:3)

设计假设是,如果您发送的消息具有相同的重复数据删除ID,那么这就是您已发送的完全相同的消息(否则,它不应具有相同的重复数据删除ID),因此SQS假装接受它再一次,假设你身边的某些事情一定出了问题,阻止你第一次意识到这条消息已经提交了。

  

sendMessage函数始终返回一个值,表示消息已成功发送到SQS”

是的,因为早已是

SQS不会验证消息实际是否重复 - 它假定它是,因为您声称必须通过在5分钟窗口内提交相同的重复数据删除ID 。如果消息已经处理完毕,那么按设计它将无法在队列中使用。

  

消息重复数据删除ID

     

用于重复删除已发送邮件的令牌。如果成功发送具有特定重复数据删除ID的邮件,则会成功接受使用相同重复数据删除ID发送的任何邮件,但在5分钟重复数据删除间隔期间不会传递。

     

https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html#FIFO-queues-understanding-logic