轻量消息队列(原 MNS)支持设置消息的可见性超时时间,本文介绍消息可见、不可见及可见性超时时间的定义和使用方法。
可见(Visible)和不可见(Unvisible)状态
可见状态:消息处于可见状态时,意味着消息可以被消费者(接收和处理消息的服务或应用程序)读取和接收。
不可见状态:当消费者接收了一条消息后,这条消息会进入不可见状态,意味着其他消费者在此期间无法接收到这条消息,以免消息被多个消费者同时处理。
可见性超时时间(Visibility Timeout)
可见性超时时间:是指从消费者接收消息开始到允许其它消费者再次接收该消息的时间段。
当消费者从队列接收消息时,消息仍然保留在队列中,但对其它消费者暂时不可见。暂时不可见状态由可见性超时机制控制,防止其它消费者在该消息正在处理时重复处理同一条消息。
设置和修改可见性超时时间
设置可见性超时时间
创建及编辑队列详情时,可设置可见性超时时间。默认值为30秒,取值范围为[1, 43200]秒,即1秒~12小时。详细操作,请参见创建队列。
修改可见性超时时间
在客户端调用ChangeMessageVisibility方法修改当前消息的超时时间,您可以根据业务需求缩短或延长超时时间。详细说明,请参见ChangeMessageVisibility。
合理设置可见性超时时间
如果可见性超时时间设置得太长(例如设置为12个小时),遇到某个消费者由于应用程序错误、崩溃或连接失败等问题无法在可见性超时时间到期之前删除该消息,其它消费者需要等待12个小时之后才能再次消费到这些消息。所以请根据业务场景合理设置可见性超时时间的数值。