由于各种”另类“的需求,有时候消息不能直接扔到Queue里去。
于是就有了下面这几个概念:
Message Timer
Visibility Timeout
Delay Queue

先从Delay Queue来说。
你可以理解为他是和正常Queue完全”不相关“的另一个Queue。
如果Delay Queue被启用的话,那么所有消息都要先在Delay Queue里停留规定的时间,才被移动到正常的Queue中,被consumer们看到。
所以启用了Delay Queue后,所有消息都要等。
默认0秒,最长15分钟。
Message Timer的意思其实就是某个消息的Invisibility定时器。有这样Timer的消息,在规定的时间不可见。你可以理解为它已经出现在正常的Queue中了,但是由于设置了Timer,所以不可见。
默认0秒,最长15分钟。
Visibility Timeout,注意这里是Timeout。
这里的时间是当一个消息被一个Consumer处理时,这个消息就在Queue不见了。
但其实它并没有消失,只是对其他Consumer不可见了。
如果这个Consumer能够执行完,那么它会把消息从Queue中删除掉。
如果这个Consumer不能在Timeout时间内执行完,那么相当于它被”还回到“Queue中,对其他Consumer可见。
这个Timeout默认是30秒,最长12小时。
都说到这儿了,一个问题就是,如果一直没人取,那么会在队列中停多久?
Retention Timeout,默认4天,区间1分钟到14天。
