此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 spring-cloud-stream 4.1.4! |
重置偏移
当应用程序启动时,每个分配的分区中的初始位置取决于两个属性startOffset
和resetOffsets
.
如果resetOffsets
是false
,普通的 Kafka 使用者auto.offset.reset
语义适用。
即,如果绑定的 Consumer Group 的 partition 没有提交的偏移量,则位置为earliest
或latest
.
默认情况下,具有显式group
用earliest
和匿名绑定(没有group
) 用途latest
.
可以通过设置startOffset
binding 属性。
第一次使用特定group
.
不存在已提交偏移量的另一个情况是偏移量是否已过期。
使用现代代理(自 2.1 起)和默认代理属性,偏移量将在最后一个成员离开组后 7 天过期。
请参阅offsets.retention.minutes
broker 属性了解更多信息。
什么时候resetOffsets
是true
,则 Binders 将类似的语义应用于 broker 上没有已提交的偏移量时应用的语义,就好像此 binding 从未从 topic 中使用过一样;即,任何当前提交的偏移量都将被忽略。
以下是可能使用此模式的两个用例。
-
从包含键/值对的压缩主题中使用。 设置
resetOffsets
自true
和startOffset
自earliest
;绑定将执行seekToBeginning
在所有新分配的分区上。 -
从包含事件的主题中使用,其中您只对此绑定运行时发生的事件感兴趣。 设置
resetOffsets
自true
和startOffset
自latest
;绑定将执行seekToEnd
在所有新分配的分区上。
如果在初始分配之后发生再平衡,则只会对初始分配期间未分配的任何新分配的分区执行查找。 |
有关对 topic offset 的更多控制,请参阅 rebalance listener;当提供侦听器时,resetOffsets
不应设置为true
,否则将导致错误。