大家好,我是三友~~在众多关于MQ的面试八股文中有这么一道题,“如何保证MQ消息消费的幂等性”。为什么需要保证幂等性呢?是因为消息会重复消费。为什么消息会重复消费?明明已经消费了,为什么消息会被再次被消费呢?不同的MQ产生的原因可能不一样本文就以RocketMQ为例,来扒一扒RocketMQ中会导致消息重复消息的原因,最终你会发现,其实消息重复消费算是RocketMQ无奈的“bug”。如果有对RocketMQ不熟悉的小伙伴,可以看看我之前写的 RocketMQ保姆级教程 和 RocketMQ消息短暂而又精彩的一生 这两篇文章。消息发送异常时重复发送首先,我们来瞅瞅RocketMQ发送消息和消
大家好,我是三友~~在众多关于MQ的面试八股文中有这么一道题,“如何保证MQ消息消费的幂等性”。为什么需要保证幂等性呢?是因为消息会重复消费。为什么消息会重复消费?明明已经消费了,为什么消息会被再次被消费呢?不同的MQ产生的原因可能不一样本文就以RocketMQ为例,来扒一扒RocketMQ中会导致消息重复消息的原因,最终你会发现,其实消息重复消费算是RocketMQ无奈的“bug”。如果有对RocketMQ不熟悉的小伙伴,可以看看我之前写的 RocketMQ保姆级教程 和 RocketMQ消息短暂而又精彩的一生 这两篇文章。消息发送异常时重复发送首先,我们来瞅瞅RocketMQ发送消息和消
网上博客常说,kafka的topic数量过多会影响kafka,而RocketMQ不会受到topic数量影响。但是,果真如此吗?最近排查一个问题,发现RocketMQ稳定性同样受到topic数量影响!!好了,一起来回顾下这次问题排查吧,最佳实践和引申思考放在最后,千万不要错过。1、问题描述我们的RocketMQ集群为4.6.0版本,按照3个nameserver,2个broker,每个broker为主从双节点部署。部署架构某天收到警报,broker-b突然从nameserver掉线,且主从双节点都无法重新注册。2、初步排查(1)检查进程存活&网络因为控制台上显示broker-a正常,因此可以认为n
网上博客常说,kafka的topic数量过多会影响kafka,而RocketMQ不会受到topic数量影响。但是,果真如此吗?最近排查一个问题,发现RocketMQ稳定性同样受到topic数量影响!!好了,一起来回顾下这次问题排查吧,最佳实践和引申思考放在最后,千万不要错过。1、问题描述我们的RocketMQ集群为4.6.0版本,按照3个nameserver,2个broker,每个broker为主从双节点部署。部署架构某天收到警报,broker-b突然从nameserver掉线,且主从双节点都无法重新注册。2、初步排查(1)检查进程存活&网络因为控制台上显示broker-a正常,因此可以认为n
前言1.rocketmq安装可参考:https://www.jianshu.com/p/f3713adfa3dd2.启动好nameserv和broker3.官方RocketMQ+springcloudstream例子https://github.com/alibaba/spring-cloud-alibaba/blob/2021.x/spring-cloud-alibaba-examples/rocketmq-example/readme-zh.md本文将说明普通消息发送/消费、广播消息发送/消费、延时消息发送消费三种模式项目环境/依赖:2.3.12.RELEASEHoxton.SR122.2
前言1.rocketmq安装可参考:https://www.jianshu.com/p/f3713adfa3dd2.启动好nameserv和broker3.官方RocketMQ+springcloudstream例子https://github.com/alibaba/spring-cloud-alibaba/blob/2021.x/spring-cloud-alibaba-examples/rocketmq-example/readme-zh.md本文将说明普通消息发送/消费、广播消息发送/消费、延时消息发送消费三种模式项目环境/依赖:2.3.12.RELEASEHoxton.SR122.2
1RocketMQ使用相关问题1.1保证消息的可用性/可靠性/不丢失消息可能在哪些阶段丢失呢?可能会在这三个阶段发生丢失:生产阶段、存储阶段、消费阶段所以要从这三个阶段考虑:image.png1.1.1生产在生产阶段,主要通过请求确认机制,来保证消息的可靠传递。同步发送的时候,要注意处理响应结果和异常。如果返回响应OK,表示消息成功发送到了Broker,如果响应失败,或者发生其它异常,都应该重试。异步发送的时候,应该在回调方法里检查,如果发送失败或者异常,都应该进行重试。如果发生超时的情况,也可以通过查询日志的API,来检查是否在Broker存储成功。1.1.2存储存储阶段,可以通过配置可靠性
1RocketMQ使用相关问题1.1保证消息的可用性/可靠性/不丢失消息可能在哪些阶段丢失呢?可能会在这三个阶段发生丢失:生产阶段、存储阶段、消费阶段所以要从这三个阶段考虑:image.png1.1.1生产在生产阶段,主要通过请求确认机制,来保证消息的可靠传递。同步发送的时候,要注意处理响应结果和异常。如果返回响应OK,表示消息成功发送到了Broker,如果响应失败,或者发生其它异常,都应该重试。异步发送的时候,应该在回调方法里检查,如果发送失败或者异常,都应该进行重试。如果发生超时的情况,也可以通过查询日志的API,来检查是否在Broker存储成功。1.1.2存储存储阶段,可以通过配置可靠性
在基于了解或掌握其他同类MQ的基础知识上,怎么比较快速的掌握kafka的核心设计,确保在使用的过程中做到心中有数,做到知其然并知其所以然?本篇文章主要是笔者在已有的rmq的基础上学习kafka的思路以及过程的总结。ps、rmq指RocketMQps、文章写着写着发现有点长,应该挺乱了……ps、因为是学习笔记,所以就这样吧,随便看看……疑问带着问题去学习新的技能,也许会更贴近自己原有的知识储备,也能更好的把新知识纳入自己原有的知识体系并加以补充或者延展,形成更完整的知识脉络。基于原有的rmq的知识体系,在提前梳理了几个相关的,并且浅显的问题,主要是两个方面的内容,一类是MQ模型中生产者客户端的设
在基于了解或掌握其他同类MQ的基础知识上,怎么比较快速的掌握kafka的核心设计,确保在使用的过程中做到心中有数,做到知其然并知其所以然?本篇文章主要是笔者在已有的rmq的基础上学习kafka的思路以及过程的总结。ps、rmq指RocketMQps、文章写着写着发现有点长,应该挺乱了……ps、因为是学习笔记,所以就这样吧,随便看看……疑问带着问题去学习新的技能,也许会更贴近自己原有的知识储备,也能更好的把新知识纳入自己原有的知识体系并加以补充或者延展,形成更完整的知识脉络。基于原有的rmq的知识体系,在提前梳理了几个相关的,并且浅显的问题,主要是两个方面的内容,一类是MQ模型中生产者客户端的设