今天忽然收到 RocketMQ 预警信息如下:
提醒有部分数据没有消费,产生堆积情况。
打开RocketMq-Console-Ng查看如下图形式:
备注:第一反应是Consumer Group 内订阅了多个 topic ?(为什么这么怀疑,下次分析)。
通过命令statsAll 作用是查询 Topic and Consumer tps stats:
sh mqadmin statsAll -n namesrv |awk '{print $2}' |sort |uniq -c | sort -k 1 -n -r
发现没有问题,很奇怪?还好之前源码看过,只能调试源码了。
本篇不重点讲解源码过程,后续有空再慢慢分析源码部分,消费端为了实现负载均衡器,每次当有结点添加或者减少都会重新 doRebalance,默认选择的就是获取所有队列以及得到对应 group 下面所有的 cidAll (所有的消费端),之后类似于分页操作差不多……
进行断点到该位置发现奇怪现象:
源码部分:
备注: 现象是什么大概清楚了,下面的重点是为什么会出现这样的情况呢?
通过 RocketMQ 命令查询结果还是一样:
sh mqadmin consumerConnection -g consumerGroup -n namesrvAddr
回头看看为什么会这样,RocketMQ 很多流程有点忘记了,抽空再过一遍,把这个问题梳理下。
天仅仅只是开始,期待你的持续关注,让我们一起走进 rocketmq 的世界!!!
在阅读源码时做了一定的注释,基于 rocketmq4.1.0 加详细中文代码注释 。欢迎大家 star、fork !
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.