12.7.3.7. 管理偏移策略


使用 auto.offset.reset 属性控制消费者在未提交偏移时的行为方式,或者不再有效或删除已提交的偏移。

假设您第一次部署使用者应用,并且它从现有主题读取消息。由于这是第一次使用 group.id 时,__consumer_offsets 主题不包含此应用的任何偏移信息。新应用可以从日志开始时开始处理所有现有消息,或者仅处理新消息。默认重置值为 latest,它从分区末尾开始,因此表示丢失了一些消息。为避免数据丢失,但会增加处理量,请将 auto.offset.reset 设置为从分区 开始时开始

另请考虑使用 early 选项 避免在为代理配置的偏移保留周期(偏移.retention.分钟)终止时丢失信息。如果消费者组或独立消费者不活跃,且在保留周期内未提交偏移,则之前提交的偏移会从 __consumer_offset 中删除

# ...
heartbeat.interval.ms=3000 1
session.timeout.ms=10000 2
auto.offset.reset=earliest 3
# ...
1
根据预期的重新平衡,调整心跳间隔越低。
2
如果 Kafka 代理在超时期限到期前未收到 heartbeat,则消费者会从消费者组中移除,并启动重新平衡。如果代理配置具有 group.min.session.timeout.msgroup.max.session.timeout.ms,会话超时值必须在这个范围内。
3
设置为 更早的 以返回到分区的开头,并在未提交偏移时避免数据丢失。

如果单个获取请求中返回的数据量较大,则使用者处理数据之前可能会发生超时。在这种情况下,您可以降低 max.partition.fetch.bytes 或增加 session.timeout.ms

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.