RabbitMq死信队列那些坑

公司项目采用RabbitMq消息队列,无意中踩了个大坑,一不小心成了加班狗......
     言归正装,那么如何创建死信队列?我们从最基本的开始。首先,配置业务队列,绑定到业务交换机上
其次,为业务队列配置死信交换机和路由key,最后为死信交换机配置死信队列。当然,我们不是定义一个公共的死信队列,然后死信消息就到自己跑到死新队列了。正确的做法是使用死信的业务队列配置一个死信交换机,这里同一个项目的死信交换机可以共用一个,为每个业务队列分配一个单独的路由key。
我们有了死信交换机和路由key后,就像配置业务队列一样,配置死信队列,然后绑定在死信交换机上。也就是说,死信队是绑定在死信交换机上的队列。死信交换机是用来接受死信的交换机,所以任何类型(Direct、Fanout、Topic)都可以。确切的说,为每个业务队列分配一个独有的路由key,并对应的配置一个死信队列进行监听,一般会为每个重要的业务队列配置一个死信队列。
死新队列的使用场景:
超过30分钟未支付的订单,我们需要进行超时订单的处理:先调用微信支付api,查询该订单的支付状态。如果未支付调用关闭业务订单的api,并修改订单状态为已关闭,并回滚库存数。如果该订单已经支付,做补偿操作(修改订单状态和记录)。
唯一的区别在于正常队列的创建:
设置消息过期参数 x-message-ttl:10000(10秒);
设置死信交换机 x-dead-letter-exchange:dlx.exchange

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值