重置偏移量

当应用程序启动时,每个已分配分区中的初始位置取决于 startOffsetresetOffsets 这两个属性。 如果 resetOffsetsfalse,则应用正常的 Kafka 消费者 auto.offset.reset 语义。 即,如果绑定(binding)的消费者组(consumer group)没有为某个分区提交偏移量,则位置为 earliestlatest。 默认情况下,具有显式 group 的绑定使用 earliest,而匿名绑定(没有 group)使用 latest。 这些默认值可以通过设置 startOffset 绑定属性来覆盖。 当绑定首次以特定 group 启动时,将不会有已提交的偏移量。 没有已提交偏移量的另一种情况是偏移量已过期。 使用现代 Broker(自 2.1 版本起)和默认的 Broker 属性,偏移量在最后一个成员离开组后 7 天过期。 有关更多信息,请参阅 offsets.retention.minutes Broker 属性。

resetOffsetstrue 时,Binder 会应用类似于 Broker 上没有已提交偏移量时所应用的语义,就好像此绑定从未消费过该主题一样;即,任何当前的已提交偏移量都将被忽略。

以下是两种可能使用此功能的情况。

  1. 消费包含键/值对的压缩主题。 将 resetOffsets 设置为 true 并将 startOffset 设置为 earliest;绑定将对所有新分配的分区执行 seekToBeginning

  2. 消费包含事件的主题,而你只对该绑定运行时发生的事件感兴趣。 将 resetOffsets 设置为 true 并将 startOffset 设置为 latest;绑定将对所有新分配的分区执行 seekToEnd

如果在初始分配后发生再平衡,则寻求操作将仅在初始分配期间未分配的任何新分配的分区上执行。

有关主题偏移量的更多控制,请参阅 再平衡监听器;提供监听器时,不应将 resetOffsets 设置为 true,否则会导致错误。