记一次RocketMQ 消息已经消费然则cosumer offset没有更新的问题
发现问题:
开发中在项目重启时会重复消费消息,但其实消息已经消费过了。
查找问题:
1.RocketMq console查看,发现订阅组消息延迟
2.从消息看message Detail 对应的consumerGroup trackType为 not conume yet
3.项目日志也没有任何错误日志,然而根据相关业务查询数据库发现数据已经处理完成
4.业务代码断点,没有抛出任何异常,通过resend message也能正常消费
5.怀疑是不是rocketMq 更新offset的定时任务没有启动
然而通过源码断点MQClientInstance 定时任务正常,只是每次更新的offset都是原offet
6.看看是不是消费的时候出了问题
由于是用的spring-boot整合的client,跟踪consumer源码,代码在DefaultRocketMQListenerContainer.handleMessage方法中
然而一切正常,再往上跟踪到DefaultMessageListenerConcurrently
public class DefaultMessageListenerConcurrently implements MessageListenerConcurrently {
@SuppressWarnings("unchecked")
@Override
public ConsumeConcurrentlyStatus consumeMessage(List msgs, ConsumeConcurrentlyContext contex