可靠消息+最终一致性方案(MQ延迟队列+死信路由)

本文介绍了使用RabbitMQ实现可靠消息传递和最终一致性方案,通过MQ的延迟队列和死信路由功能,详细阐述了配置环境、死信处理和延迟投递的过程,确保消息在指定时间到达目标队列,从而实现特定业务需求。
摘要由CSDN通过智能技术生成

RabbitMQ简单使用看这里,包括使用这个方案之前mq的配置环境

RabbitMQ

       

死信

Dead Letter exchanges (死信路由)


》一个消息在满足如下条件下,会进死信路由,注意是路由不是队列,一个路由可以对应多个队列。

   .一个消息被消费者拒收了,并且reject方法的参数里requeue是false,也就是说不会被再次放到队列里,被其他消费者使用。         
      (basic.reject/basic.nack) requeue=false
   .上面消息的TTL到了,消息过期了。
   .队列的长度限制满了,排在前面的消息会被丢弃或者扔到死信路由上
   
》Dead Letter Exchange其实就是一种普通的exchange,和创建其他exchange没什么区别,只是在某一个设置Dead Letter Exchange的队列     中有消息过期,会自动触发消息的转发,发送到Dead Letter Exchange中去。

》我们即可以控制消息在一段时间后变成死信,又可以控制变成死信的消息被路由到某一个指定的交换机,结合二者,可以实现一个延迟队列。

延迟队列

实现定时任务

场景:比如未付款,超过一定时间后,系统自动取消订单并释放占有物品,也就是解库存。

解决方案springDe schedule 定时任务轮询数据库。

缺点:增加系统消耗,增加数据库压力,存在较大时间差

解决:Rabbitmq的消息TTL和死信队列EXchange结合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值