轻量消息队列(原 MNS)如何保证多个消费者访问同一消息队列,不会丢失消息或重复消费消息?

本文介绍轻量消息队列(原 MNS)如何保证多个消费者访问同一消息队列,不会丢失消息或者重复消费消息的问题。

轻量消息队列(原 MNS)中每个队列都具有可配置的不可见时间段属性(即队列的取出消息隐藏时长属性)。

当队列中的某条消息被取出后,在不可见时间段内,其他消费者将无法获取到该条消息。

  • 如果消费者在不可见时间内完成了消费,则需要通过临时句柄(ReceiptHandle)进行消息的删除。

  • 如果消费者在不可见时间内未完成消费,则需要发送不可见时间段的延长请求(ChangeVisibilityTimeout),否则消息将会在不可见时间段结束后重新被其他消费者取出。