SQS FIFO如何确保完全处理一次?

时间:2019-12-23 21:51:58

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

SQS FIFO保证它将只处理一次队列中的消息。我想知道其背后的核心逻辑是什么。当成千上万的事务发生时,它如何在分布式环境中从队列中仅一次处理一条消息。我只是想了解基本的架构和设计原则。因此,我认为使用这种架构的人真的可以提供一些见解。

1 个答案:

答案 0 :(得分:3)

根据documentation,可以保证不会在5分钟的时间内将同一封邮件提交到队列中。邮件相等性由正文哈希或提交时传递的ID定义。

  

与标准队列不同,FIFO队列不会引入重复的消息。 FIFO队列可帮助您避免将重复发送到队列。如果您在5分钟的重复数据删除间隔内重试SendMessage操作,则Amazon SQS不会在队列中引入任何重复项。

因此,在我看来,他们有一个哈希/ id的中央哈希表,他们针对每条新消息进行检查,并自动删除5分钟以上的哈希/ id。您可以将Redis与TTL结合使用来轻松实现。

我找不到有关此功能可扩展性的任何信息,但从增加的TPS(每秒事务)限制来看,这听起来比常规队列更昂贵。

相关问题