マルチスレッド機能(ConcurrentKafkaListenerContainerFactory)でスプリングカフカを使用すると、次のような2種類のスレッド名が見つかりました: 1.#0-1-kafka-consumer-1 2 #0-1-kafka-listener-3スプリングカフカの消費者とリスナーを理解する方法
この2種類のスレッドはどうやって理解できますか?彼らの間の関係は何ですか? ありがとうございます!
マルチスレッド機能(ConcurrentKafkaListenerContainerFactory)でスプリングカフカを使用すると、次のような2種類のスレッド名が見つかりました: 1.#0-1-kafka-consumer-1 2 #0-1-kafka-listener-3スプリングカフカの消費者とリスナーを理解する方法
この2種類のスレッドはどうやって理解できますか?彼らの間の関係は何ですか? ありがとうございます!
コンシューマスレッドは、メッセージのためにKafkaConsumer
をポーリングし、リスナを呼び出すリスナスレッドに渡します。
これは遅いリスナーがパーティションの再調整を引き起こす可能性があるため、KafkaConsumer
の初期バージョンで必要でした。つまり、コンシューマスレッドでハートビートを送信する必要がありました。
これは、KafkaConsumer
(ハートビートはバックグラウンドで送信される)で修正されました.2.0では、スレッドタイプは1つしかなく、リスナはコンシューマスレッドで呼び出されます。 2.0.0.M2(マイルストーン2)は現在利用可能です。このリリースは来月末頃に予定されています。
以前のKafkaバージョン(< 0.10.1
)では、遅いリスナーを持つ苦痛でした。死んでいると考えられていた非アクティブな消費者スレッド、したがって再調整が行われました。そのため、スレッドハンドを導入し、リスナーで処理するレコードを別のスレッドに渡すのはこのためです。したがって、これらのスレッド接頭辞はまさにそれです。
最新のバージョン2.0
では、Kafka 0.10.2
に基づいて、Kafkaクライアント自体で正しくハートビートが発生するため、このロジックを削除しました。したがって、遅いリスナーについてはもう心配する必要はありません。すべてのものが消費者のスレッド上で動作します。
私は「スローリスナー」とは何かを説明することができます2.消費者スレッドとリスナースレッドの間の関係は1:1で、それは正しいですか? –
こんにちはゲーリー、再びあなたを見てうれしい!私は基本的な疑問を持っています。もし、partitionAとpartionBの両方がconsumerAに割り当てられていたら、consumerAは同時にそれらを消費しますか?または、最初にpartionAのすべてのmsgを消費し、次にpartitionBのmsgを消費しますか? –
それはカフカの人々のための質問です。私は彼らの内部アルゴリズムを知らない。 –