我有一个带有2个分区的“主题”。
topic-0
topic-1
我有2个输入消息通道
input0
input1
具有相同的目的地“主题”和相同的组。
我的理解是,由于它是一个相同的组,每个主题将自动分配一个分区。
是否可以将特定分区分配给特定的消息通道?
答案 0 :(得分:2)
您可以为Kafka消费者分配特定分区,并禁用消费者auto-rebalance
以及相应的instanceCount
和instanceIndex
属性。
例如,在您的情况下,
--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
以上配置将使用partition
,instanceCount
和instanceIndex
值基于模数为每个使用者分配主题的分区(绑定输入通道时)。