此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 spring-cloud-stream 4.1.4spring-doc.cadn.net.cn

重置偏移

当应用程序启动时,每个分配的分区中的初始位置取决于两个属性startOffsetresetOffsets. 如果resetOffsetsfalse,普通的 Kafka 使用者auto.offset.reset语义适用。 即,如果绑定的 Consumer Group 的 partition 没有提交的偏移量,则位置为earliestlatest. 默认情况下,具有显式groupearliest和匿名绑定(没有group) 用途latest. 可以通过设置startOffsetbinding 属性。 第一次使用特定group. 不存在已提交偏移量的另一个情况是偏移量是否已过期。 使用现代代理(自 2.1 起)和默认代理属性,偏移量将在最后一个成员离开组后 7 天过期。 请参阅offsets.retention.minutesbroker 属性了解更多信息。spring-doc.cadn.net.cn

什么时候resetOffsetstrue,则 Binders 将类似的语义应用于 broker 上没有已提交的偏移量时应用的语义,就好像此 binding 从未从 topic 中使用过一样;即,任何当前提交的偏移量都将被忽略。spring-doc.cadn.net.cn

以下是可能使用此模式的两个用例。spring-doc.cadn.net.cn

  1. 从包含键/值对的压缩主题中使用。 设置resetOffsetstruestartOffsetearliest;绑定将执行seekToBeginning在所有新分配的分区上。spring-doc.cadn.net.cn

  2. 从包含事件的主题中使用,其中您只对此绑定运行时发生的事件感兴趣。 设置resetOffsetstruestartOffsetlatest;绑定将执行seekToEnd在所有新分配的分区上。spring-doc.cadn.net.cn

如果在初始分配之后发生再平衡,则只会对初始分配期间未分配的任何新分配的分区执行查找。

有关对 topic offset 的更多控制,请参阅 rebalance listener;当提供侦听器时,resetOffsets不应设置为true,否则将导致错误。spring-doc.cadn.net.cn