设置消息TTL的俩种方式就不讲了,也就是消息属性设置TTL和队列设置消息TTL。
分析两者的区别:
两者区别只有判断消息是否过期的时间不同。
消息属性设置TTL: 因为通过消息属性设置TTL,发送到队列的消息是各不相同的,如果你想要判断消息是否过期,那么就要扫描整个队列,所以索性等到消息即将要发送给消费者时(队列头),判断消息是否过期,如果消息过期则抛弃或者进入死信队列。
队列设置消息TTL: 因为通过队列设置消息TTL,整个队列中的过期时间是一样的(不另外通过消息属性设置TTL),那么过期的消息势必出现在队列头一整段,这个时候从队列头扫描(定时扫描)到没有过期的消息前,将这一段的消息全部抛弃或者进入死信队列。