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