2017-07-27 62 views
0

我有一个包含2个分区的“主题”。如何将特定卡夫卡用户分配到特定分区

topic-0 
topic-1 

我有2个输入消息通道

input0 
input1 

与同一目的地 “主题” 和相同的基团。

我的理解是,由于它是同一个组,每个主题都会自动分配一个分区。

是否可以将特定分区分配给特定的消息通道?

回答

2

您可以将特定分区分配给卡夫卡消费者,同时禁用消费者的auto-rebalance以及相应的instanceCountinstanceIndex属性。

例如,在你的情况下,

--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值模。