RocketMQ死信队列在实际业务场景中的运用

一、先来了解一下啥是死信队列:

        这篇博客,是基于大家有消息队列使用经验的同学,如果没有使用经验的,可以学习一下消息队列,主流的AMQ,RMQ,KAFKA等等

       死信队列:没有被及时消费的消息存放的队列,消息没有被及时消费有以下几点原因:

       a.消息被拒绝(basic.reject/ basic.nack)并且不再重新投递 requeue=false

       b.TTL(time-to-live) 消息超时未消费

       c.达到最大队列长度

 消息变成死信后,会被重新投递(publish)到另一个交换机上(Exchange),这个交换机往往被称为DLX(dead-letter-exchange)“死信交换机”,然后交换机根据绑定规则转发到对应的队列上,监听该队列就可以被重新消费。

二、死信队列在实际业务场景中的运用:

          有过电商订单业务开发经验的同学,应该会遇到以下的业务场景,当客人提交订单后,在规定的支付时限内,迟迟没有付款,在电商交易环节,提交订单,预示着预锁了库存,超时未支付,需要及时取消订单,释放库存。

          

       如果订单库数据量特别庞大,实时捞取库中超时的订单,应该特别耗时,而且可能捞出来批量数据,很多技术大咖,立马想到了运用消息队列的死信队列来变通处理,框架图如下:

       

       充分利用了消息队列的异步、解耦的特性,一切看起来这么顺畅,希望这个场景运用能给大家带来一丢丢的心灵的共鸣!

猜你喜欢

转载自blog.csdn.net/jason_jiahongfei/article/details/117263533