在使用kafka遇到需要回滚重新消费消息的时候,我们需要定位某个消息在某个分片中的offset,然后从那个offset重新消费消息。
首先,需要找出需要回滚到的消息的位置offset
第一步,把分片中的消息先导入到文本文件里:
比如:我把mytopic分片1的所有消息,先导入到文本文件里,注意这里需要加 --from-beginning
/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.2.201:9092 --topic mytopic --partition 1 --from-beginning >> ./mytopic-1.log
第二步,在文本文件里,拿到某个消息的最早行号:
cat -n leniu_lncore_topic-1.log | grep 9 | head -n 1
这时候就能拿到最早的消息行号,用 行号 - 1 就是 当前消息在该分片的最早 offset(行号从1开始,offset从0开始),只需要从该offset 重新消费信息即可。



