消费者要从头开始消费某个topic的全量数据,需要满足2个条件(spring-kafka):
(1)使用一个全新的"group.id"(就是之前没有被任何消费者使用过); (2)指定"auto.offset.reset"参数的值为earliest;
注意:从kafka-0.9版本及以后,kafka的消费者组和offset信息就不存zookeeper了,而是存到broker服务器上,所以,如果你为某个消费者指定了一个消费者组名称(group.id),那么,一旦这个消费者启动,这个消费者组名和它要消费的那个topic的offset信息就会被记录在broker服务器上。
比如我们为消费者A指定了消费者组(group.id)为fg11,那么可以使用如下命令查看消费者组的消费情况:
bin/kafka-consumer-groups.sh --bootstrap-server 172.17.6.10:9092 --describe --group fg11
在kafka官网可以看到 https://kafka.apache.org/documentation/#oldconsumerconfigs
对于auto.offset.reset的说明,通过在项目中配置选项,同时新建一个groupid就实现了从头开始消费。
auto.offset.reset具体含义:(注意版本不同,配置参数会有所不一致,具体参考官网)
-
earliest
当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费 -
latest
当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据 -
none
topic各分区都存在已提交的offset时,从offset后开始消费;只要有一个分区不存在已提交的offset,则抛出异常
网友评论