4.7. 管理偏移策略
使用 auto.offset.reset
属性来控制消费者在未提交偏移时的行为方式,或者提交的偏移不再有效或删除。
假设您首次部署消费者应用,并且它从现有主题读取消息。由于第一次使用 group.id
,因此 __consumer_offsets
主题不包含此应用的任何偏移信息。新应用可以开始处理来自日志开头的所有现有消息,或仅处理新消息。默认重置值 是最新的
,它从分区的末尾开始,因此意味着丢失了一些消息。为避免数据丢失,但要增加处理量,将 auto.offset.reset
设置为 earliest
以在分区的头部开始。
另外,请考虑使用 earliest
选项以避免在为代理配置的偏移保留周期(offsets.retention.minutes
)时丢失消息。如果消费者组或独立消费者不活跃,且在保留期间没有偏移量,则之前提交的偏移将从 __consumer_offsets
中删除。
# ... heartbeat.interval.ms=3000 1 session.timeout.ms=45000 2 auto.offset.reset=earliest 3 # ...
如果单个获取请求返回的数据量较大,则可能会在消费者处理前发生超时。在这种情况下,您可以降低 max.partition.fetch.bytes
或增加 session.timeout.ms
。