重置偏移量

應用啟動時,每個分配到的分割槽的初始位置取決於兩個屬性:startOffsetresetOffsets。如果 resetOffsetsfalse,則應用正常的 Kafka 消費者 auto.offset.reset 語義。也就是說,如果繫結消費者組的分割槽沒有提交的偏移量,則位置為 earliestlatest。預設情況下,具有顯式 group 的繫結使用 earliest,匿名繫結(沒有 group)使用 latest。可以透過設定 startOffset 繫結屬性來覆蓋這些預設值。繫結首次使用特定 group 啟動時,不會有提交的偏移量。另一種沒有提交偏移量的情況是偏移量已過期。對於較新的 Broker(自 2.1 版起)和預設 Broker 屬性,偏移量在最後一個成員離開組後 7 天過期。有關更多資訊,請參閱 Broker 屬性 offsets.retention.minutes

resetOffsetstrue 時,Binder 應用的語義與 Broker 上沒有提交偏移量時應用的語義類似,就好像此繫結從未從主題消費過一樣;也就是說,任何當前提交的偏移量都會被忽略。

以下是可能使用此功能的兩個用例。

  1. 消費包含鍵值對的壓縮主題。將 resetOffsets 設定為 true 並將 startOffset 設定為 earliest;繫結將對所有新分配的分割槽執行 seekToBeginning

  2. 消費包含事件的主題,您只對在此繫結執行時發生的事件感興趣。將 resetOffsets 設定為 true 並將 startOffset 設定為 latest;繫結將對所有新分配的分割槽執行 seekToEnd

如果在初始分配後發生再平衡,則僅對初始分配期間未分配的任何新分配的分割槽執行定址。

要更精細地控制主題偏移量,請參閱 rebalance 監聽器;如果提供了監聽器,則不應將 resetOffsets 設定為 true,否則會導致錯誤。