首页 > 解决方案 > 确保来自 SQS 的消息在给定时间被单个消费者消费

问题描述

我已经配置了一个包含一个发布者和三个消费者的 SQS FIFO 队列。我想按顺序处理发布到队列的所有消息。队列中发布的所有消息都属于同一个组。

我浏览了 SQS 文档并了解到,通过配置合适的可见性超时,我们可以确保在任何给定时间只有一个消费者处理消息。在可见性超时期限内,消息不会移交给任何其他消费者。

我的问题是,当一个消费者正在处理一条消息时,队列中的其他消息是否有可能被另一个消费者消费?

如果是,有什么方法可以确保在给定时间只有一个消费者正在消费队列中的消息?

标签: amazon-web-servicesamazon-sqs

解决方案


队列中的其他消息被另一个消费者消费了?

如果它们在不同的消息组中,那么其他消费者可以读取不同的消息。但是,如果 FIFO 队列中的所有消息都属于同一个组,则它们的顺序和处理由 AWS 保证

属于同一消息组的消息始终按照相对于消息组的严格顺序逐一处理(但是,属于不同消息组的消息可能会乱序处理)。


推荐阅读