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

时间:2016-05-19 10:33:42

标签: java apache-kafka kafka-consumer-api

我在启动Kafka消费者时收到异常。

  

org.apache.kafka.clients.consumer.OffsetOutOfRangeException:   如果没有为分区{test-0 = 29898318}

配置重置策略,则偏移超出范围

我正在使用Kafka 9.0.0版和Java 7。

2 个答案:

答案 0 :(得分:15)

因此,您尝试访问主题(29898318)分区(test)中的偏移量(0),该分区现在不可用。

这个

可能有两种情况
  1. 您的主题分区0可能没有那么多消息
  2. 您在偏移29898318的邮件可能已按保留期删除
  3. 为避免这种情况,您可以执行以下操作之一:

    1. auto.offset.reset配置设为smallestlargest。 您可以找到有关此here
    2. 的更多信息
    3. 您可以通过以下方式获取smallest offset主题分区 按照Kafka命令行工具运行
    4. <强>命令:

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

      希望这有帮助!

答案 1 :(得分:2)

在运行具有特定changelog主题配置的Kafka Streams状态存储时,我遇到了这样的问题:

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

当我的应用程序关闭4天以上时,Kafka Streams仍具有指向不再存在的偏移量的快照(已被kafka删除,因为保留窗口不在外面)。在这种情况下,The restore consumer is configured to fail不会退回到最早的偏移量。

由于我对超过4天的数据不感兴趣,因此我使用了streams-application-reset工具来清除变更日志主题。