前提是对rabbitmq有一定的了解,比如虚拟主机,交换机,队列,信道,绑定,路由键,direct,fanout,topic等
我使用的是docker部署的rabbitmq,看到简书的这个,镜像版本是rabbitmq:3.7.7-management
不会的可以看教程,docker安装rabbitmq
或者这里
docker安装RabbitMQ教程(2023年最详细)
确保rabbitmq环境,并且安装了延迟交换机的插件
插件安装看这里
Docker版RabbitMQ安装延迟队列插件及延迟队列项目应用实战
本教材源码地址:https://gitee.com/jackXUYY/springboot-example.git
目录结构
direct测试
DirectConfig此类是配置direct交换机,及队列,绑定关系
调用sendDirectMessage接口发送后,
只看出到了我们自定义的监听处理,我们先注释掉自定义的处理方式
在重启服务,发送一次
也许是我们传的是map,换成jsonObject就可以了
Fonout演示
配置FonoutConfig
topic演示
TopicConfig
发送消息,指定路由键为man,
延迟交换机测试,场景就是下单了,没付费,过期取消订单
LazyExchangeConfig
看到控制台说没有回调可用
Returned message but no callback available
3、延时插件小问题
RabbitMQ延迟队列消息路由失败(312 NO_ROUTE)原因及处理
原因:延迟插件不支持mandatory=true参数,如果启用会同时收到延迟消息和路由失败消息
解决方法
设置mandatory=false
参考:https://blog.csdn.net/bbj12345678/article/details/108433250
https://www.jianshu.com/p/aa2c42e41824