1、kafka消費執行個體的工作過程,從啟動開始。(待補充)
2、auto.offset.reset屬性:預設值為 latest
earliest
當各分區下有已送出的offset時,從送出的offset開始消費;無送出的offset時,從頭開始消費
latest
當各分區下有已送出的offset時,從送出的offset開始消費;無送出的offset時,消費新産生的該分區下的資料
none
topic各分區都存在已送出的offset時,從offset後開始消費;隻要有一個分區不存在已送出的offset,則抛出異常
3、獲得消費組的offset
kafka0.9以後的版本,group.id的消費資訊不再存儲在zookeeper上。kafka會建立立一個topic(__consumer_offsets),預設分區為50,用于存放消費組的消費資訊。位置如
如何獲得某個消費組的消費情況。分如下幾步:
第一、得到這個消費者的 group.id.
第二、計算得到分區數值,例如:Math.abs("console-consumer-46965".hashCode()) % 50 = 11。
第三、在 topic為 __consumer_offsets 的分區 中得到消費者offset的資料。指令如:
bin/kafka-simple-consumer-shell.sh --topic __consumer_offsets --partition 11 --broker-list localhost:9092,localhost:9093,localhost:9094 --formatter "kafka.coordinator.group.GroupMetadataManager\$OffsetsMessageFormatter"
4、kafka消費組位移重設
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group test-group --reset-offsets
#确定作用域
--all-topics (為consumer group下所有topic的所有分區調整位移)
#位移重設政策
--to-earliest 把位移調整到分區目前最小位移
#确定執行方案
--execute 執行真正的位移調整