文章参考:Rabbit实战指南
延迟队列
延迟队列存储的对象是对应的延迟消息,所谓“延迟消息”是指当消息被发送以后,并不想让消费者立即拿到消息,而是等待特定时间后,消费者才能拿到消息进行消费。
在AMQP协议中,或者RabbitMQ本身没有直接支持延迟队列的功能,但是可以通过前面所介绍的DLX和TTL模拟出延迟队列的功能。
上次代码,不仅展示的是死信队列的用法,也是延迟队列的用法,对于queue.dlx这个死信队列,同样可以看做延迟对哦。假设一个应用需要将每条消息都设置为延迟10S,生产者通过exchange.normal这个交换器将发送的消息存储在queue.normal中。消费者订阅的并非是queue.dlx这个队列,而是queue.dlx这个队列。当消息从queue.normal这个队列中过期之后被存入queue.dlx这个队列中,消费者就恰巧消费到了延迟10秒的这条消息。
在真实应用中,对于延迟队列可以根据延迟时间的长短分为多个等级,一般分为5秒、10秒、30
秒、1分钟、5分钟、10 分钟、30分钟、1 小时这几个维度,当然也可以再细化一下。
网友评论