重置偏移量

应用启动时,每个分配到的分区的初始位置取决于两个属性: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,否则会导致错误。