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

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

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

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