通过rabbitMq设置延迟队列,用到15672图形界面

1.写个通用的baseMq

 

2.继承这个baseMQ会要求重载processMessageBodyAsync ,然后就可以在这里面写自己实际的业务,比如我的为用户确认24小时候收货 去平安银行结算。

 

3.接着在spring-rabbitmq.xml里面加个bean组件(class名为刚刚那个mq的全路径)。加一个监听,一个queue。看清了,queue是task开头的,监听里面的ref是上面bean组件的id

 

 

4. 在mq生产者新增一个方法,用于消费者去消费

 

MQConstants是个常量枚举类,需要建两个常量,名称为delay_exchange、delay_rk开头。记住这2个常量名称,后面管理后台要用。

5.去实际用的地方吃掉这个mq(比如我的是用户确认收货之后执行)

@Resource
private MessageQueueProducer               messageQueueProducer;

 

 

6.自此,代码中已经完成,还需要去rabbitmq管理后台去设置才能正常跑。

打开mq的管理后台,比如mq在你本地就是127.0.0.1:15672   。账号密码也是你设置的,如果不是你弄得,去问对应的运维或者同事

7.登录之后 界面是这样的,点击Exchange

8.滑到最下面 新增前面说到MQConstants是个常量枚举类

一共要加2个,分别是delay_exchange、task_exchange开头的,看清了,这里是exchange。后面要用到的

Type选direct

 

9.点击最上面的Queue 还是滑到最下面。

先加个延迟队列,名称以delay_queue_开头,  看清楚了 这里是queue 上面的是exchange

现在说下各个参数

Message TTL为时间,比如需要等一天就是60*60*24*1000= 86400000

Dead letter exchange  task_exchange_开头的那个 上一步说了,为了和死性队列绑定

Dead letter routing key:task_rk_开头的,和上面的区别是这个是rk 上面的是exchange

 

这两个参数别搞错了

 

10.新增完之后,刷新页面,找到这个queue,点一下,检查下参数有没有错

11.滑到下面 用exchange和rk绑定这个延迟队列。

 

12.接下来去建死性队列,和延迟队列差不多,但是名称通过task_queue开头,

看清楚了,是delay开头的 ,然后exchange和rk

 

13.建完了也点进去,用exchange和rk绑定这个延迟队列。

看清楚了,是task开头的 ,然后exchange和rk

 

14.至此,mq已全部完成,可以开始调试了

弄完之后记得检查2个queue有没有绑定exchange和rk,吧鼠标移到上面去,会变成一个小手,可以点进去的

然后检查delay是否有绑定task,如果没绑定的话 只能删掉这个delay重新开始建(反正我是没找到mq里面有编辑的)

 

 

我先讲下流程吧。

生产者生产之后,先产出Delay的这个queue,然后到了指定时间之后就去task这个queue去真正的执行自己写的逻辑代码,delay_queue只是一个用于延迟的。

 

 

 

15.遇到自己实在解决不了的问题 请邮箱35244284@qq.com 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值