如何将特定的kafka使用者分配给特定分区

时间:2017-07-27 03:41:42

标签: spring-integration spring-cloud-stream

我有一个带有2个分区的“主题”。

topic-0
topic-1

我有2个输入消息通道

input0
input1

具有相同的目的地“主题”和相同的组。

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

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

1 个答案:

答案 0 :(得分:2)

您可以为Kafka消费者分配特定分区,并禁用消费者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值基于模数为每个使用者分配主题的分区(绑定输入通道时)。