偏移量的维护
2019-10-13 本文已影响0人
阿长_一个程序员
偏移量的作用
如果消费者一直处于运行状态,那么偏移量就没有什么用处。
偏移量的作用显现与再均衡时期
消费者发生崩溃或者有新的消费者加入群组,就会触发再均衡,完成再均衡之后,每个消费者可能分配到新的分区,而不是之前处理的那个。为了能够继续之前的工作,消费者需要读取每个分区最后一次提交的偏移量,然后从偏移量指定的地方继续处理。
偏移量的提交
消费者往 _consumer_offset 的特殊主题发送消息,消息里包含每个分区的偏移量
提交偏移量的方式
-
自动提交
如果enable.auto.commit被设为true,那么每过5s,消费者会自动执行poll()方法。
poll()方法会返回由生产者写入Kafka但还没有被消费者读取过的记录,并将接收到的最大偏移量提交上去。
提交时间间隔由auto.commit.interval.ms控制,默认值是5s。 -
手动提交
把enable.auto.commit设置为false
在自己的代码中调用用commitSync()或commitAsync()提交偏移量
如果使用了Spring-kafka-starter,它会替为我们做人工提交,无需自己调用