重置偏移量

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

resetOffsetstrue 時,繫結器(binder)會應用與經紀人上沒有已提交偏移量時類似的語義,就好像這個繫結從未消費過該主題一樣;即,任何當前的已提交偏移量都會被忽略。

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

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

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

如果在初始分配後發生重新平衡,則 seek 操作將僅在初始分配期間未分配的任何新分配的分割槽上執行。

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

© . This site is unofficial and not affiliated with VMware.