2017-07-27 22 views
0

2つのパーティションを持つ「トピック」があります。特定のカフカコンシューマを特定のパーティションに割り当てる方法

topic-0 
topic-1 

と私は同じ目的地 "トピック" と同じグループで

input0 
input1 

2つの入力メッセージチャンネルを持っています。

私が理解しているのは、同じグループなので、各トピックには自動的にパーティションが割り当てられるということです。

特定のメッセージチャネルに特定のパーティションを割り当てることはできますか。

答えて

2

コンシューマのauto-rebalanceを無効にして、適切なinstanceCountinstanceIndexのプロパティを指定して、Kafkaコンシューマに特定のパーティションを割り当てることができます。

例えば、あなたの場合には、

--spring.cloud.stream.bindings.input0.consumer.instanceCount=2 --spring.cloud.stream.bindings.input1.consumer.instanceCount=2 --spring.cloud.stream.bindings.input0.consumer.instanceIndex=0 --spring.cloud.stream.bindings.input1.consumer.instanceIndex=1 --spring.cloud.stream.bindings.input0.group=mygroup --spring.cloud.stream.bindings.input1.group=mygroup --spring.cloud.stream.kafka.bindings.input0.consumer.autoRebalanceEnabled=false --spring.cloud.stream.kafka.bindings.input1.consumer.autoRebalanceEnabled=false --spring.cloud.stream.bindings.input0.destination=topic --spring.cloud.stream.bindings.input1.destination=topic

(入力チャンネルを結合する場合)上記の構成はpartitioninstanceCountinstanceIndex値を用いてモジュロに基づいて、各消費者のためのトピックのパーティションを割り当てます。

関連する問題