RocketMQ-Broker异常恢复后部分队列重新加载已消费消息问题解决

问题描述

      线上Broker所有在主机IO异常,导致Broker异常退出,主机问题解决后,重启Broker,发现group-A的几个consumeQueue,diff值有几十万,而通过查看日志信息发现该Group的consumeQueue只有几个消息未被消息,那么只能说明Broker异常恢复后将已经消费过的消息重新加载到了consumeQueue中,即:consumeQueue在Broker异常恢复过程中被重置了。

通过该线上故障需要弄清楚以下问题:

1、在Broker异常恢复过程中在什么场景下重置了consumeQueue?

2、Consumer消费完消息后如何更新consumeQueue?

https://mp.weixin.qq.com/s/3BiIvcZ6RPRKNiM-4eCs9Q

3、Broker异常重启后如何将异常加载的consumeQueue积压数据恢复到正常状态?

https://mp.csdn.net/postedit/102505114

问题解决

测试环境模拟Broker异常consumeQueue有消息积压,Broker启动后查看consumeQueue,如下:

将Broker停掉,修改./config/consumerOffset.json

 修改后:

重启Broker,查看consumeQueue ,如下:

 

总结

 如果重启后只有少量消息堆积且有重复消息的话可以不使用上述方法;

该方法使用只建议在:需要保证消息已经消费过,或者该topic的消息允许有部分丢弃,并且consumeQueue有大量积压需要处理很长时间才能恢复的情况下;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章