首页 > 解决方案 > Kafka Consumer 分发未按预期工作

问题描述

我有三个主题,每个主题在 kafka 集群上都有三个分区。

现在,共有 9 个分区。当我创建 9 个消费者时... 6 个处于空闲状态。只使用了三个消费者。

期望是:每个消费者应该拾取一个分区,因此,9 个消费者应该从 9 个分区中拾取文档

但发生的情况是:一个消费者从三个不同主题之一的分区中获取消息。

例如,我有三个主题 Topic_A、Topic_B 和 Topic_C 以及每个三个分区。因此分区如下:

Topic_A_0、Topic_A_1、Topic_A_2、Topic_B_0、Topic_B_1、Topic_B_2、Topic_C_0、Topic_C_1、Topic_C_2

当我创建 9 个消费者时,分配工作如下:

Consumer1: Topic_A_0,Topic_B_0,Topic_C_0 
Consumer2: Topic_A_1,Topic_B_1,Topic_C_1 
Consumer3: Topic_A_2,Topic_B_2,Topic_C_2
Consumer4,Consumer5,Consumer6,Consumer7,Consumer8,Consumer9 are idle

它应该是

Consumer1: Topic_A_0
Consumer2: Topic_A_1
Consumer3: Topic_A_2

Consumer4: Topic_B_0
Consumer5: Topic_B_1
Consumer6: Topic_B_2

Consumer7: Topic_C_0 
Consumer8: Topic_C_1 
Consumer9: Topic_C_2

是否有任何配置我需要让所有 9 个消费者从 9 个独特的分区中获取消息?

标签: apache-kafkapartitioningconsumerkafka-topic

解决方案


确保您的所有消费者都订阅了同一消费者组 ID 下的同一组主题。对于主题列表,您可以传递预定义的列表或正则表达式供消费者订阅。可以使用消费者中的group.id属性设置消费者 ID。


推荐阅读