今天遇到一个问题,由于代码问题导致了很多kafka消息入到备用库,偏移量已经变成了最新;如何将偏移量重设到某个时间点,但消费群组重新去消费一次,是解决问题的关键,于是,使用了kafka/bin的sh程序,以下是解决问题的步骤:

  • 查看某个组的topic偏移量,这步只是查看,没什么配置作用,只是作到心中有数,时间戳可以使用在线工具去生成
kafka-run-class.sh kafka.tools.GetOffsetShell  --broker-list localhost:9092 -topic order_new -time 1659087120000
  • 直接修改原消费组的topic的偏移量
kafka-consumer-groups.sh  --bootstrap-server localhost:9092 --group group1 --topic order_new --reset-offsets --to-datetime 2022-07-29T18:00:00.000  --execute

你将到得到一个错误,这个错误是说,本消费组是活动的,你不能修改

  • 我们需要弃旧图新,建立新组group2,并且绑定原因的topic,再修改新组的offset偏移量,再把代码里的消费群组改成新组,就可以了
./kafka-console-consumer.sh --bootstrap-server localhost:9092  --topic order_new --group group2
  • 修改group2对于order_new的偏移量,偏移量对应的时间节点是2022-07-29T18:00:00.000
kafka-consumer-groups.sh  --bootstrap-server localhost:9092 --group group2 --topic order_new --reset-offsets --to-datetime 2022-07-29T18:00:00.000  --execute
  • 查看修改后的状态,也可以通过kafka客户端去查看
kafka-consumer-groups.sh --describe --group group2 --state --bootstrap-server localhost:9092