kafka的auto.offset.reset

关于kafak的offset

offset 指的是每个消费组消费的下标,每条消息对应一个下标
每次消费数据如果提交offset,那么下次消费就会从提交offset + 1 开始消费。

如果100条数据,我消费了50条(0~49)并提交了,那下次就从50开始消费。

cosumer 的 enable.auto.commit = true 表示自动提交
max.poll.records 可以设置每次拉取最大条数

测试:

offset = false + earlist -> OK !
每个分区都从头消费
不提交offset时,如果把auto.offset.reset设为earliest, 是可以消费到数据的,但是如果再次运行,且不提交下标,会重复消费。

offset = false + latest -> No
不存在latest, 指的是,没有新的数据(从consumer创建开始,后生产的数据),之前产生的数据不消费!)
所以,要先打开consumer,保持其在启动状态,再生产数据,才能读到。

offset = false + none -> 异常
所有分区都没有已提交的offset,找不到从哪里开始,所以抛出异常。只要有一个分区不存在已提交的offset就会抛出异常。

当分区下有已经提交的offset,earlist 和 latest 都是从提交的offset开始消费

你可能感兴趣的:(Kafka,kafka,offset)