偏移量的作用
如果消費者一直處于運行狀態,那么偏移量就沒有什么用處。
偏移量的作用顯現與再均衡時期
消費者發生崩潰或者有新的消費者加入群組,就會觸發再均衡,完成再均衡之后,每個消費者可能分配到新的分區,而不是之前處理的那個。為了能夠繼續之前的工作,消費者需要讀取每個分區最后一次提交的偏移量,然后從偏移量指定的地方繼續處理。
偏移量的提交
消費者往 _consumer_offset 的特殊主題發送消息,消息里包含每個分區的偏移量
提交偏移量的方式
自動提交
如果enable.auto.commit被設為true,那么每過5s,消費者會自動執行poll()方法。
poll()方法會返回由生產者寫入Kafka但還沒有被消費者讀取過的記錄,并將接收到的最大偏移量提交上去。
提交時間間隔由auto.commit.interval.ms控制,默認值是5s。手動提交
把enable.auto.commit設置為false
在自己的代碼中調用用commitSync()或commitAsync()提交偏移量
如果使用了Spring-kafka-starter,它會替為我們做人工提交,無需自己調用