如何将特定的kafka消费者分配给特定的分区

How to assign a specific kafka consumer to a specific partition

我有一个有 2 个分区的 "topic"。

topic-0
topic-1

我有 2 个输入消息通道

input0
input1

同一个目的地"topic"和同一个组。

我的理解是,因为是同一个组,所以每个topic都会自动分配一个partition。

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

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