[解決済み】Kafkaコンシューマオフセットを決定するのは何ですか?
質問
私はKafkaの比較的新しいユーザーです。少し実験してみましたが、コンシューマオフセットについていくつか不明な点があります。私がこれまでに理解したところでは、コンシューマが起動するとき、それが読み取りを開始するオフセットは、構成設定によって決定されます。
auto.offset.reset
(間違っていたら訂正してください)。
例えば、トピックに10個のメッセージ(オフセット0から9まで)があり、あるコンシューマがダウンする前に(あるいは私がコンシューマを殺す前に)たまたまそのうちの5個を消費していたとします。そして、そのコンシューマー・プロセスを再起動させたとします。私の質問は、以下の通りです。
-
もし
auto.offset.reset
が設定されています。earliest
は、常にオフセット0から消費を開始するのでしょうか? -
もし
auto.offset.reset
が設定されています。latest
の場合、オフセット5から消費し始めるのでしょうか? -
この種のシナリオに関する動作は、常に決定論的なのでしょうか?
私の質問で不明な点があれば、遠慮なくコメントしてください。
どのように解決するのですか?
もう少し複雑です。
は
auto.offset.reset
コンフィグ
は、コンシューマグループが有効なオフセットをどこかにコミットしていない場合にのみ起動します (現在サポートされているオフセットストレージは Kafka と Zookeeper の 2 つです)。
もしあなたが高レベルのJavaコンシューマを使用している場合、以下のシナリオを想像してみてください。
-
コンシューマグループ内にコンシューマがある場合
group1
このメッセージは5つのメッセージを消費して死にました。次にこのコンシューマを起動するときは、そのauto.offset.reset
オフセットストレージ(KafkaまたはZK)から保存されたオフセットを取得するだけなので、死亡した場所から続行します。 -
トピックにメッセージがあり(説明の通り)、新しいコンシューマーグループでコンシューマーを開始するとします。
group2
. どこにもオフセットが保存されておらず、今回はauto.offset.reset
は、トピックの先頭から始めるかどうかを決定します (earliest
) またはトピックの最後から (latest
)
もう一つ、オフセット値がどのように対応するかに影響するものがあります。
earliest
と
latest
は、ログの保持ポリシーです。例えば、トピックの保存期間を1時間に設定したとします。5つのメッセージを作成し、その1時間後にさらに5つのメッセージを投稿したとします。このとき
latest
オフセットは前の例と同じままですが
earliest
にすることはできません。
0
なぜなら、カフカはこれらのメッセージをすでに削除しているため、最も早く利用可能なオフセットは
5
.
上記はすべて
SimpleConsumer
で、実行するたびに、どこから始めるかを
auto.offset.reset
コンフィグ
Kafkaのバージョンが0.9より古い場合、以下のように置き換える必要があります。
earliest
,
latest
と
smallest
,
largest
.
関連
-
[解決済み] tempとは何ですか、またjavaにおけるtempの用途は何ですか?
-
[解決済み] Firebase クラスにシリアライズするプロパティが見つからない
-
[解決済み] Application startメソッドで例外が発生する。JavaFx 11
-
[解決済み] javax.naming.NameNotFoundException
-
[解決済み] ファイルを作成せずに、ファイルが存在するかどうかをチェックする
-
[解決済み] アニメーションGIFの表示
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] maven. -source 1.5ではラムダ式がサポートされていません。
-
[解決済み] Eclipse デフォルトのフォント名
-
[解決済み] java.util.concurrent.ExecutionException 例外をどのように処理しますか?
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] HTTP ステータス 500 - サーブレットクラス pkg.coreServlet のインスタンス化に失敗しました。
-
[解決済み] どのように配列の10未満の値(x * 2)を倍増するコードを取得するには?(Java)
-
[解決済み] Java- <T extends Comparable<T>>の意味?
-
[解決済み] Mavenです。JARは空になります - 含有するためにマークされたコンテンツがありません
-
[解決済み] タイプの安全性。アンチェック・キャスト
-
[解決済み] java.io.IOException。DER長の短い読み取り