YAZONG 我的开源

RocketMq消息已消费成功,但控制台依然显示NOT_CONSUME_YET

  ,
0 评论0 浏览

开发环境

Win10-64bit/centos7.4-64bit

java version "1.8.0_172"

Rocketmq版本4.3.0

Rocketmq-console版本4.3.0-4.7.1

问题重现

在本地编写的demo以及生产环境中,消息其实已经消费,但是控制台依然显示未消费。

image.png

ISSUES

通过rocketmq的issues发现一个一样的问题。但是至今4.8.0版本依然为合并。

https://github.com/apache/rocketmq/issues/503

本地源码debug

对应rocketmq-tools模块下DefaultMQAdminExtImpl中的consumed方法

可以发现BrokerData对象中是显示的映射名称。

而msg对象中是显示的真正的IP。

image.png

本地源码改造

image.png

改为

image.png

image.png

最终结果

重新打包rocketmq-tools包到rocketmq-externals中。测试成功。

image.png


轨迹状态如下:

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