2017-05-04 5 views
0

からの回復は、ここでカフカについて、私の問題だ:カフカ - ジャワ - crashs

私は(一方が他方を読んで、生産された)カフカとデータを交換する2つのプログラムがあります。顧客がクラッシュしたとしましょう。プロデューサーはメッセージを送信し続け、しばらくしてから、顧客を再起動します。私たちの現在のブローカーの設定で

が、ここで発生するものを想定している:(1440ある offsets.retention.minutes として)

クラッシュが1日未満前に起こった-IF

、検索されたオフセットは、待機中のメッセージは処理されます。

- クラッシュが1日以上前に発生した場合、お客様の新しいオフセットは最も早くリセットされます(auto.offset.resetが最も早い)。問題は、カフカが7日間のメッセージを保存する(log.retention.hoursが168であるため)、一部のメッセージがすでに処理されている(1日前と7日前の間に)場合、再びメッセージが表示されます。

は解決策は(もちろん変換分< =>時間をやって)同じ値に両方offsets.retention.minuteslog.retention.hoursを設定するのと同じくらい簡単ですか?それとも、それは私が逃したいくつかの副作用がありますか?より簡単な解決策は、既に処理されたメッセージを削除するだけですが、カフカはそれを実行できないようです。

読んでいただきありがとうございます。

答えて

0

あなたの考えは正しいと思います。

私はこのことについていくつかの光を与えることは興味深い未解決の問題(あなたがそれをhere見つけることができます)からいくつかの文章を引用するつもりです:削除ポリシーについて

保持がごとに行われていますトピック/パーティション特定のトピック/パーティションの最後にコミットされたオフセットがoffsets.retention.minutesよりも長く更新されていない場合、オフセットはガベージコレクトされます。

与えられた消費者グループ、トピック、パーティションについては、締固めた後、最終的にはオフセット話題に保存されている1つのメッセージのみが存在します:オフセット保持のためのデフォルト値が低いということである理由

理由。保護したいのは、短命の消費者団体です。

あなたはこの問題を最初に考え出すことはできません。