先看一下kafka官网对于auto.offset.reset=earliest/latest的详解
earliest: automatically reset the offset to the earliest offset,翻译过来就是自动将偏移量置为最早的
latest:automatically reset the offset to the latest offset 自动将偏移量设置为最新的
可能大部分朋友都觉得在任何情况下把这两个值设置为earliest或者latest ,消费者就可以从最早或者最新的offset开始消费,但在实际上测试的时候发现并不是那么回事,因为他们生效都有一个前提条件,那就是对于同一个groupid的消费者,如果这个topic某个分区有已经提交的offset,那么无论是把auto.offset.reset=earliest还是latest,都将失效,消费者会从已经提交的offset开始消费.
earliest
当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费
latest
当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据
如果想测试的话,可以把kafka的enable.offset.commit设置为false,让kafka的自动提交功能关闭,这时候对于某个topic就没有已经提交的offset了,对于同一个groupid来说,不管是earliest还是latest,consumer都可以从最早或者最新的offset开始消费.