kafka学习总结015 --- consumer配置参数之auto.offset.reset

auto.offset.reset用来指定consumer消费策略,有如下取值:

1、latest(分区有提交的offset,从提交的offset后一个offset开始消费;否则等待新生产的数据【默认配置】

示例:topic3有两个分区、3个副本;其中topic3-0有五条数据,offset为0~4,但是offset0~offset4未提交,验证结果如下:

指定不自动提交offset && auto.offset.reset=latest:

消费者启动后,发现未消费到数据,并且对于topic3-0分区来说HW为5:

此时再生产5条数据,可以看到,消费者消费的offset区间为5~9:

2、earliest(分区有提交的offset,从提交的offset后一个offset开始消费;否则从头开始消费

示例:接着前面的例子,topic3-0中有10条数据,offset为0~9,验证结果如下:

配置auto.offset.reset为earliest

消费者启动,可以看到从头开始消费数据:

3、none(分区有提交的offset,从提交的offset后一个offset开始消费;否则抛出异常

分区无已经提交的offset:

分区0内有15条数据,offset为0~14,其中offset0~offset9已经被提交;offset10~14未提交;

consumer启动后再生产5条数据,结果如下:

个人使用建议:

1、auto.offset.reset最好不要设置为latest,这是因为:如果分区内的数据未被消费过,这时消费者上线,会导致消费者无法消费到前面的数据(当然也得看应用场景,如果认为这种情况的数据就该丢失,那当我没说)

2、auto.offset.reset设置为earliest时,可能会有重复消费的问题,这就需要消费者端做数据去重处理

猜你喜欢

转载自www.cnblogs.com/sniffs/p/13203721.html