内容简介:还没关注?快动动手指!
还没关注?
快动动手指!
聊技术、论职场!
为IT人打造一个“有温度”的 狸猫技术窝
RabbitMQ的主要作用基本上可以用8个字概括, 削峰填谷、异步解耦 。但是引入MQ我们也不得不考虑引入MQ后带来的一些问题,如消息丢失。
业务场景不一样,处理方式也就不一样。比如发短信,日志收集,我们主要看吞吐量,所以对消息丢失容忍度较高,这类场景基本上不用花太多时间在消息丢失问题上。
另外一种,如我们用MQ来做分布式事务,续保计算,提成的计算,这类业务对消息丢失容忍度较底,所以我们一定要考虑消息丢失的问题。
这次分享的内容是 怎么来最大限制的防止消息丢失 ,顺带提一下消息的重发和重复消费。
RabbitMQ 模型图
ConfirmCallback 和 ReturnCallback
在这里我们主要实现了ConfirmCallback和ReturnCallback两个接口,这两个接口主要是用来发送消息后回调的。
因为rabbit发送消息是只管发,至于发没发成功,发送方法不管。
-
ConfirmCallback :当消息成功到达exchange的时候触发的ack回调。
-
ReturnCallback :当消息成功到达exchange,但是没有队列与之绑定的时候触发的ack回调。发生网络分区会出现这种情况。
在这里一定要把这两个开关打开,publisher-confirms="true" publisher-returns="true"。
生产者端使用ConfirmCallback和ReturnCallback回调机制,最大限度的保证消息不丢失,对原有CorrelationData类进行扩展,来实现消息的重发,具体请看下面的源码。
消息的日志链路跟踪
使用MQ来解耦服务,异步化处理一些复杂耗时逻辑,但是也带来了一个问题。
由于异步化以后,排查问题就很不方便了,根本不知道这个消息什么时候消费,消费的日志也很不好排查。
所以,引入了Slf4j MDC机制将主线程的日志链路和消息的日志链路连起来,方便MQ问题的排查。
RabbitSender
CorrelationData
Message
AbstractConsumer
END
作者: xiaolyuh
来源:
https://www.jianshu.com/p/f7165dd06db3
本文版权归作者所有
长按下图二维码,即刻关注【 狸猫技术窝 】
阿里、京东、美团、字节跳动
顶尖技术专家 坐镇
为IT人打造一个 “有温度” 的技术窝!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 消息队列面试连环问:如何保证消息不丢失?处理重复消息?消息有序性?消息堆积处理?
- 消息队列(三)常见消息队列介绍
- 消息队列(七)RocketMQ消息发送
- 消息队列探秘 – RabbitMQ 消息队列介绍
- 消息中间件RocketMQ消息发送
- 【消息队列】RabbitMQ如何保证消息顺序
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
八年级数学(华东师大版)-解题升级-解题快速反应一本通(新课标)
孙丽敏等编 / 吉林教育出版社 / 2004-6 / 10.0
本书将与知识点、重点、难点和考点有关的典型题做全析全解,是具有解题题典性质的助学读物。但本书又优于解题题典,不仅展示解题过程,更详细地提供了解题思考过程和切入点的选择方法,教方法导引思路的功能更强。 学生要提高解题能力,必须具备两个条件:一是打好基础,二是能够运动所学知识分析问题和解决问题。本书用例题解析解说知识点、重点、难点和考点,同时提供解题思考过程,在打基础中激活能力,在解题实......一起来看看 《八年级数学(华东师大版)-解题升级-解题快速反应一本通(新课标)》 这本书的介绍吧!