2017-07-21 18 views
1

私はカフカの一時停止&の再開機能をConsumerに表示しています。コンシューマーの一時停止と再開はConsumerGroupレベルで機能しますか?

この一時停止がコンシューマグループに存在するすべてのコンシューマで発生するのではないかと思いますか?私はまた、消費者グループのために一時停止状態がKafka Server上に保持されていることをここで読んでいます。

誰かが上記の質問に答えたり、適切なリソースを教えてくれれば助けになります。

+0

を読むことができました。そのパーティションに割り当てられているコンシューマとそのコンシューマが属するコンシューマ・グループがパーティションを一時停止すると、そのコンシューマ・グループからのメッセージの受信は停止します。 – vahid

+1

@vahid 5つのパーティションを持つトピックがあり、コンシューマ・グループに2つのコンシューマがあるとします。この場合、1つのコンシューマは3つのパーティションからデータを読み取り、もう1つのコンシューマは他の2つのパーティションからデータを読み取ります。今私は1消費者でpause()を使用する場合、2番目の消費者は、それが割り当てられているパーティションからデータの読み取りを停止しますか? – Mahiz

+1

'pause()'はパーティションのリストを取ります。たとえば、あなたのトピックが5つのパーティションで 'test'である場合、あなたのコードに' consumer.pause(Collections.singleton(new TopicPartition( 'test'、0)) ')のようなものがあります。これにより、トピックのパーティション0のみが一時停止します。これは、poll()呼び出しを行うとき、両方の消費者がパーティション1から4(例えば、パーティション1と2の最初のコンシューマとパーティション3と4の2番目のコンシューマ)から消費し続けることを意味します。それが理にかなってほしい。 – vahid

答えて

0

一時停止はコンシューマ自身の通常のアクションであり、消費者グループからの削除ではありません。 APIのドキュメントによると、Pause()はパーティションからのフェッチを中断しますが、このメソッドはパーティションのサブスクリプションには影響しません。したがって、消費者グループからは削除されず、グループの再調整は発生しません。

コンシューマグループに存在するすべてのコンシューマに対してこの一時停止が発生すると、このトピックのすべてのパーティションのこのグループのlagEndOffsetがこの期間に増加します。カフカのメッセージモデルはPULLモデルなので、取り出す方法をいつ取り出すかは消費者によって異なります。同じグループのすべての消費者は、一時停止または再開するときに互いに影響しません。それは再バランスを引き起こさないからです。

あなたは、各パーティションが、唯一の消費者に割り当てられているコンシューマ・グループには、このhttp://kafka.apache.org/documentation.html#theconsumer & & http://kafka.apache.org/documentation.html#impl_consumerregistration

関連する問題