Kafka 使用者偏移量超出范围,未为分区配置重置策略

2022-09-02 12:17:28

在启动 Kafka 使用者时获得以下异常。

org.apache.kafka.clients.consumer.OffsetOutOfRangeException: Offsets 超出范围,没有为分区配置重置策略{test-0=29898318}

Kafka 版本: 9.0.0 Java 7


答案 1

因此,您正在尝试访问 topic() partition() 中的 offset() ,该分区() 现在不可用。29898318test0

可能有两种情况

  1. 您的主题分区可能没有那么多消息0
  2. 按保留期划分的邮件可能已被删除29898318

为避免这种情况,您可以执行以下操作之一:

  1. 将配置设置为 或 。您可以在此处找到有关此内容的更多信息auto.offset.resetearliestlatest
  2. 您可以通过运行以下Kafka命令行工具来获得可用于主题分区smallest offset

命令:

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list <broker-ip:9092> --topic <topic-name> --time -2

希望这有帮助!


答案 2

我在运行具有特定更改日志主题配置的Kafka Streams状态存储时遇到了这个SO问题:

  • cleanup.policy=compact,delete
  • 保留期 4 天

如果 Kafka Streams 仍有一个快照文件指向不再存在的偏移量,则还原使用者将配置为失败。它不会回退到最早的偏移量。当传入的数据很少或应用程序关闭时,可能会发生这种情况。在这两种情况下,如果在更改日志保留期内没有提交,则不会更新快照文件。(这是基于分区的)

解决此问题的最简单方法是停止 kafka 流应用程序,删除其本地状态目录,然后重新启动应用程序。


推荐