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