参考资料:《RabbitMQ实战指南 》朱忠华 。
RabbitMq 实现延迟队列
通过 RabbitMQ 延迟队列,我们需要关注的2个知识点(这里不进行知识普及,可以通过推荐书籍,官方网址等其他方式获取基础知识)
- 消息的过期时间(TTL)
- 死信队列
消息延迟队列实现的原理如下图:
原理解析:
1、生产者发送消息的队列中,且针对该队列没有消费者
2、由于队列没有消费者,消息在过期之后会进入到死信队列中
3、监听死信队列,并对死信队列中的消息进行消费
通过队列中的消息延迟转发实现延迟队列。
RabbitMq 延迟队列本身的特性,导致的问题。
通过查看相关RabbitMq 介绍内容,进行相关测试。
测试代码如下
// 发送消息
@RequestMapping("/send-msg")
public String placeOrder(@RequestParam(value = "expiration",defaultValue = "60000")String expiration)</