代码编织梦想

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

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

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

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

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

       c.达到最大队列长度

 

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

 

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

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

          

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

       

 

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jason_jiahongfei/article/details/117263533

rocketmq的重试队列和死信队列_还不够的博客-爱代码爱编程

原文:https://www.jianshu.com/p/1281f7fee69c 消费端,一直不回传 消费的结果。rocketmq认为消息没收到,consumer下一次拉取,broker依然会发送该消息。 所以,任何异常都要捕获返回ConsumeConcurrentlyStatus.RECONSUME_LATER rocketmq会放

mq死信队列的应用场景_aaa821的博客-爱代码爱编程_死信队列应用场景

 转自:https://blog.csdn.net/zhanghan18333611647/article/details/79519085  二、用代码进行相关测试:                1、生产者进行添加,20s后不进行消费,发现消息从正常的队列进入了死信队列;                2、生产者进行添加,消费者进行消费;   

rocketmq源码分析之消息重试_ph3636的博客-爱代码爱编程

当消息消费失败后需要把消息重新发送给broker,可以设置延迟级别 public boolean sendMessageBack(final MessageExt msg, final ConsumeConcurrentlyContext context) { int delayLevel = context.getDelayLevelWhenN

rocketmq-死信队列_pigcoffee的博客-爱代码爱编程_死信队列应用场景

问题思考 死信队列的应用场景死信队列中的数据是如何产生的?如何查看死信队列中的数据?死信队列的读写权限死信队列如何消费? 应用场景 一般应用在当正常业务处理时出现异常时,将消息拒绝则会进入到死信队列中,有助于统计异常数据并做后续处理; 数据是如何产生的? 重试队列在重试16次(默认次数)将消息放入死信队列 参考: https://blog.csd

RocketMQ消息队列介绍与应用-爱代码爱编程

RocketMQ简单介绍 RocketMQ是一个消息中间件,MQ的主要特点为解耦、异步、削峰,具有高性能、高可靠、高实时、分布式特点,用于减少数据库压力的业务场景,其中RocketMQ的核心组件概念如下: 支持严格的消息顺序支持Topic与Queue两种模式亿级消息堆积能力支持多种消息协议,如 JMS、MQTT 等分布式高可用的部署架构,满足至少一次消

RocketMQ:死信队列和消费幂等-爱代码爱编程

1. 死信队列 上一篇《RocketMQ:消息重试》中我们提到当一条消息消费失败时,RocketMQ会进行一定次数的重试。重试的结果也很简单,无非就是在第N次重试时,被成功消费。或者就是经过M次重试后,仍然没有被消息。这通常是由于消费者在正常情况下无法正确地消费该消息。此时,RocketMQ不会立即将消息丢弃,而是将其发送到该消费者对应的特殊队列中去。

Rabbitmq死信队列的使用-爱代码爱编程

1.死信 死信也就是dead message,可以简单理解为无法被成功消费对消息。消息变成死信消息大概有下面几种情况 消息TTL过期(消息或队列设置了过期时间)队列达到最大长度消息被拒绝(basic.reject / basic.nack),并且requeue = false禁止重入2.死信队列与死信交换机 死信交换机,用户转发死信消息(dead m

RocketMQ死信队列-爱代码爱编程

前言 当一条消息初次消费失败,消息队列 RocketMQ 会自动进行消息重试;达到最大重试次数后,若消费依然失败,则表明消费者在正常情况下无法正确地消费该消息,此时,消息队列 RocketMQ 不会立刻将消息丢弃,而是将其发送到该消费者对应的特殊队列中。 在消息队列 RocketMQ 中,这种正常情况下无法被消费的消息称为死信消息(Dead-Lette

【RocketMQ】应用-爱代码爱编程

一、普通消息 1. 消息发送分类 Producer对于消息的发送方式也有多种选择,不同的方式会产生不同的系统效果。 同步发送消息 同步发送消息:Producer发出一条消息后,会在收到ACK之后才发下一条消息。该方式消息的可靠性最高,但消息发送效率太低。 异步发送消息 异步发送消息:Producer发出消息后无需等待MQ返回ACK,直接发送

浅谈rocketmq_mq中的消息无人消费会导致_!pang的博客-爱代码爱编程

我们围绕下面9个问题来解答: 1.为什么要用消息队列?(消息队列的应用场景?) 2.各种消息队列产品的比较 3.消息队列的优点和缺点? 4.如何保证消息队列的高可用? 5.如何保证消息不丢失? 6.如何保证休息不被重复消费?(如何保证消息消费的幂等性?) 7.如何保证消息消费的顺序性? 8.大量消息堆积怎么处理? 9.消息过期怎么处理?

解决rocketmq死信队列不消费问题_mq 消费者不消费了-爱代码爱编程

分享知识 传递快乐 因为需要处理死信队列问 RocketMQ 官方死信队列配置,将死信队列配置到服务中,代码配置啥的都没问题,可就是不消费。经过多从磨难终于抛开云雾见明月,下面记录一下。 pom.xml <dependency>     <groupId>com.alibaba.cloud</groupId>