重設偏移量
當應用程式啟動時,每個已分配分割區的初始位置取決於兩個屬性 startOffset
和 resetOffsets
。如果 resetOffsets
為 false
,則適用正常的 Kafka 消費者 auto.offset.reset
語意。亦即,如果綁定的消費者群組的分割區沒有已提交的偏移量,則位置為 earliest
或 latest
。預設情況下,具有明確 group
的綁定使用 earliest
,而匿名綁定(沒有 group
)使用 latest
。這些預設值可以透過設定 startOffset
綁定屬性來覆寫。當第一次使用特定的 group
啟動綁定時,將不會有已提交的偏移量。沒有已提交偏移量存在的另一種情況是偏移量已過期。對於現代 Broker(自 2.1 以來)和預設 Broker 屬性,偏移量在最後一個成員離開群組後 7 天過期。有關更多資訊,請參閱 offsets.retention.minutes
Broker 屬性。
當 resetOffsets
為 true
時,Binder 套用與 Broker 上沒有已提交偏移量時類似的語意,就好像此綁定從未從主題消費過一樣;亦即,任何當前的已提交偏移量都會被忽略。
以下是可能使用此功能的兩種使用案例。
-
從包含鍵/值對的壓縮主題消費。將
resetOffsets
設定為true
,並將startOffset
設定為earliest
;綁定將對所有新分配的分割區執行seekToBeginning
。 -
從包含事件的主題消費,您只對此綁定執行時發生的事件感興趣。將
resetOffsets
設定為true
,並將startOffset
設定為latest
;綁定將對所有新分配的分割區執行seekToEnd
。
如果在初始分配後發生重新平衡,則搜尋將僅在新分配的分割區上執行,這些分割區在初始分配期間未被分配。 |
如需更多關於主題偏移量的控制,請參閱 重新平衡監聽器;當提供監聽器時,不應將 resetOffsets
設定為 true
,否則會導致錯誤。