web-dev-qa-db-ja.com

kafkaのオフセットトピックの保持期間に関する問題

カフカで問題が発生しています。パーティションとコンシューマグループ内のコンシューマが1つだけのトピックがあります。消費者は1か月間停止されました。その間、プロデューサーはトピックにメッセージを送信しています。

コンシューマーを再び開始すると、メッセージを消費できません。以前にコミットされたオフセットが失われたと思います。そのため、コンシューマーは、目覚めたときに開始点を見つけることができません。

コンシューマーを停止して再起動すると、コンシューマーは新しいメッセージを取得できますが、以前に送信されたすべてのメッセージが消費されることはありません。

オフセットが破損していますか? kafka内部トピックオフセットの保持期間は、最後にコミットされたオフセットが削除されたことを意味しますか?

9
Joey Trang

保持値はkafkaブローカーで以下を使用して構成できます。

offsets.retention.minutes

デフォルトは24時間です。参照: Kafka消費者グループオフセット保持

7

私たちも同じ問題に直面しており、私はそれについて少し調査しました。私はそれが解決した以下の手順を変更しました。

14日間の保存期間があるため、kafkaトピックの保存期間を14日間にオフセットしました

以下を実行することにより、cleanup.policyをコンパクトから削除に変更しました

./kafka-configs.sh  --alter --zookeeper localhost:2181 --entity-type topics
              --entity-name __consumer_offsets --add-config cleanup.policy=delete

トピック「__consumer_offsets」の構成を更新しました。

3

kafkaは1週間、つまり)7日でのメッセージ(オフセット)のデフォルトの保持期間

保存期間が過ぎると、スペースのオーバーフローを回避するために、既存のすべてのオフセットがブローカーから削除されます。

したがって、以前のオフセットはkafka/zookeeperによって削除されたため、以前にコミットされたオフセットは最新のオフセットに変更されます。

メッセージを長期間保持したい場合は、kafkaでトピックを作成するときに--retention-period値を指定します。

1
Mani Maran