确保来自 SQS 的消息在给定时间由单个消费者使用
Ensuring message from SQS being consumed by single consumer at a given time
我已经为一个发布者和三个消费者配置了一个 SQS FIFO 队列。我想按顺序处理所有发布到队列的消息。队列中发布的所有消息属于同一个组。
我已经阅读了 SQS 文档并了解通过配置合适的可见性超时,我们可以确保在任何给定时间只有一个消费者处理一条消息。在visibility超时时间内,消息不会交给任何其他消费者。
我的问题是,当一个消费者正在处理一条消息时,队列中的其他消息是否有可能被另一个消费者消费?
如果是,如何确保在给定时间只有一个消费者在消费队列中的消息?
other messages in the queue get consumed by another consumer?
如果他们在不同的消息组,那么不同的消息可以被其他消费者读取。但是如果你在FIFO队列中的所有消息都属于同一个组,那么它们的顺序和处理就是guaranteed by AWS:
Messages that belong to the same message group are always processed one by one, in a strict order relative to the message group (however, messages that belong to different message groups might be processed out of order).
我已经为一个发布者和三个消费者配置了一个 SQS FIFO 队列。我想按顺序处理所有发布到队列的消息。队列中发布的所有消息属于同一个组。
我已经阅读了 SQS 文档并了解通过配置合适的可见性超时,我们可以确保在任何给定时间只有一个消费者处理一条消息。在visibility超时时间内,消息不会交给任何其他消费者。
我的问题是,当一个消费者正在处理一条消息时,队列中的其他消息是否有可能被另一个消费者消费?
如果是,如何确保在给定时间只有一个消费者在消费队列中的消息?
other messages in the queue get consumed by another consumer?
如果他们在不同的消息组,那么不同的消息可以被其他消费者读取。但是如果你在FIFO队列中的所有消息都属于同一个组,那么它们的顺序和处理就是guaranteed by AWS:
Messages that belong to the same message group are always processed one by one, in a strict order relative to the message group (however, messages that belong to different message groups might be processed out of order).