RabbitMQ中的死信队列和消息超时的简单使用

本文介绍了RabbitMQ中如何设置消息超时和使用死信队列,包括消息超时的概念、死信交换机和死信队列的原理,以及在抢购场景中的应用。通过示例演示了从创建正常业务队列到设置死信队列的完整流程,帮助读者理解如何处理未消费的消息和避免数据丢失。
摘要由CSDN通过智能技术生成

概念:

消息超时

这个很简单,队列中的消息,不设置超时时间并且消费者宕机,就会越放越多,所以我们可以在创建queue的时候设置一个队列大小和队列超时时间。
在这里插入图片描述

死信交换机和死信队列:

专门收集一些拒绝接受的,超时未消费的,超出了队列大小的消息任务。

使用场景:

(1)10件商品,100个用户进来购买,队列中大小设置为10,只允许10用户购买请求进来,其他的都reject,reject的这部分都会自动进行死信队列中,这也可以换成超出队列大小的情况。
(2)10件商品,100个用户进来购买,全部购买请求都放过期时间为10分钟的队列中,付款完成后算消费成功,10分钟不付款的订单记录自动消失。超时消失的这部分消息自动进入到死信队列中记录。
当然还有更多更复杂的,就靠自己DIY~
当然直接入库或者通过redis也可以做,都可以,我当时设计抢购的模块是这样选择的:
通过MQ设置队列大小限制抢购数量和保存购买的用户请求,这样既可以保证有序,又可以保证超买超卖,Redis保存预扣商品库存的数量,支付时通过MQ的用户购买请求和Redis中的预扣库存生成订单,调起支付的API和JS,完成支付后

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值