RocketMQ部分数据消费不了问题排查

问题现象

今天突然收到RocketMQ预警信息以下:tomcat

提醒有部分数据没有消费,产生堆积状况。负载均衡

打开RocketMq-Console-Ng查看以下图形式:命令行

备注:第一反应是Consumer Group内订阅了多个topic?(为何这么怀疑,下次分析)。3d

经过命令statsAll 做用是查询Topic and Consumer tps stats调试

sh mqadmin statsAll -n namesrvorm

发现没有问题,很奇怪?还好以前源码看过,只能调试源码了。cdn

源码调试

本篇不重点讲解源码过程,后续有空再慢慢分析源码部分,消费端为了实现负载均衡器,每次当有结点添加或者减小都会从新doRebalance,默认选择的就是获取全部队列以及获得对应group下面全部的cidAll(全部的消费端),以后相似于分页操做差很少……blog

进行断点到该位置发现奇怪现象:队列

看到这里就明白了为何 RocketMq-Console-Ng查看下面不少是空白的没有消费端了,因为cidAll的0、二、3同样一共有16个队列,cidAll显示4个 那么每一个客户端应该是分配4个的,可是因为0、二、3都同样 就分配一次的。

源码部分:ci

备注: 现象是什么大概清楚了,下面的重点是为何会出现这样的状况呢?

问题排查

经过RocketMQ命令查询结果仍是同样:

看到这里让我不由怀疑是否消费实例启动屡次,查看代码依然没有,实在没办法偶然查看了下tomcat的配置,惊喜的发现:
与该使用方交流发现是的确是没有重启部署了,重启问题解决。

待解决

回头看看为何会这样,RocketMQ不少流程有点忘记了,抽空再过一遍,把这个问题梳理下。

天仅仅只是开始,期待你的持续关注,让咱们一块儿走进rocketmq的世界!!!

往期rocketmq系列文章


若是读完以为有收获的话,欢迎点赞、关注、加公众号【匠心零度】,查阅更多精彩历史!!!

加入知识星球,一块儿探讨!

相关文章
相关标签/搜索