开发环境
Win10-64bit/centos7.4-64bit
java version "1.8.0_172"
Rocketmq版本4.3.0
Rocketmq-console版本4.3.0-4.7.1
问题重现
在本地编写的demo以及生产环境中,消息其实已经消费,但是控制台依然显示未消费。
ISSUES
通过rocketmq的issues发现一个一样的问题。但是至今4.8.0版本依然为合并。
https://github.com/apache/rocketmq/issues/503
本地源码debug
对应rocketmq-tools模块下DefaultMQAdminExtImpl中的consumed方法
可以发现BrokerData对象中是显示的映射名称。
而msg对象中是显示的真正的IP。
本地源码改造
改为
最终结果
重新打包rocketmq-tools包到rocketmq-externals中。测试成功。
轨迹状态如下:
public enum TrackType {
CONSUMED,
CONSUMED_BUT_FILTERED,
PULL,
NOT_CONSUME_YET,
NOT_ONLINE,
UNKNOWN
}
最后的想法
自己对rocketmq的学习暂不十分透彻。
1)这里识别的如果是IP映射的话,应该识别哪种网卡来判断呢?这块ROCKETMQ的标准我还不清楚,所以不能轻易改。
2)我发现在正常做生产和消费的时候,我们这里引入的只有rocketmq-client,而这个rocketmq-client并不会依赖rocketmq-tool,即这里的代码改动并不会影响正常的生产和消费,rocketmq-externals会引入rocketmq-tool,我第二个想法是,如果改动了这里,会不会对第三方模块有影响。关于模块依赖图参考
”https://blog.llyweb.com/articles/2020/11/14/1605332778104.html”。
标题:RocketMq消息已消费成功,但控制台依然显示NOT_CONSUME_YET
作者:yazong
地址:https://blog.llyweb.com/articles/2021/01/25/1611559256787.html