【发布时间】:2018-06-04 16:03:35
【问题描述】:
我想知道 SQS 可见性超时的有效实现是什么样的。消息是否放在另一个队列中并且工作人员会扫过它并删除那些达到超时阈值的消息?
【问题讨论】:
标签: algorithm amazon-web-services message-queue amazon-sqs
我想知道 SQS 可见性超时的有效实现是什么样的。消息是否放在另一个队列中并且工作人员会扫过它并删除那些达到超时阈值的消息?
【问题讨论】:
标签: algorithm amazon-web-services message-queue amazon-sqs
我会亲自实现它,方法是存储一个timestamp,说明何时使其可见。
ReceiveMessage() 期间,不要返回任何包含timestamp < now 的消息
timestamp < now 消息显示为 In Flight
timestamp >= now 时,什么都不做!虽然会有很多时间戳比较,但这不会比检查状态代码差。另外,当时间过去时,不需要清除时间戳,因此它是“高效”的,因为不需要“扫描”过程。
Amazon SQS 高度分布在多个服务器和多个可用区中,因此避免任何可能的数据更新最有效,因为它需要在服务器之间复制。
【讨论】: