web-dev-qa-db-ja.com

Kafkaパーティションのリセットポリシーが構成されていない範囲外のコンシューマオフセット

Start Kafka consumerの場合、例外を受け取ります。

org.Apache.kafka.clients.consumer.OffsetOutOfRangeException:パーティションのリセットポリシーが設定されていない範囲外のオフセット{test-0 = 29898318}

Kafka version 9.0.0 with Java 7。

12
basit raza

したがって、offset(29898318)トピック(test)パーティション(0)現在利用できません。

これには2つのケースがあります

  1. トピックパーティション0これらの多くのメッセージがない場合があります
  2. オフセット29898318は保持期間までに既に削除されている可能性があります

これを回避するには、次のいずれかを実行できます。

  1. セットする auto.offset.resetsmallestまたはlargestに設定します。これに関する詳細情報を見つけることができます こちら
  2. 得られる smallest offset以下を実行することにより、トピックパーティションで利用可能Kafkaコマンドラインツール

コマンド:

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

お役に立てれば!

18
avr

私はこれをヒットしましたSO特定のchangelogトピック設定でStreams状態ストアを実行するときの問題:Kafka

  • cleanup.policy=cleanup,delete
  • 4日間の保持

Kafka Streamsには、もう存在しないオフセットを指すスナップショットファイルがまだある場合、 復元コンシューマーは失敗するように構成されています 。このシナリオは、非常に少ないデータが入ったとき、またはアプリケーションがダウンしたときに起こります。どちらの場合も、変更ログの保持期間内にコミットがなければ、スナップショットファイルは更新されません。 )

この問題を解決する最も簡単な方法は、kafka Streamsアプリケーションを停止し、そのローカル状態ディレクトリを削除して、アプリケーションを再起動することです。

2
Tim Van Laer