我正在编写一个带有0.9 Java API的Kafka Consumer Client .

我创建了一个包含15个分区(0-14)的主题 . 启动了三个消费者客户端,然后启动 生产环境 者以生成50,000条消息 .

在这三个消费者客户开始处理之后,我停止了其中一个 . 过了一会儿,重新 balancer 发生了,问题就出现了 .

问题是,当我启动三个消费者客户端时,他们都被分配到分区 . 例如:

client 1: 0, 1, 2, 3, 4

client 2: 5, 6, 7, 8, 9

client 3: 10, 11, 12, 13, 14

在我停止客户端3之后,重新 balancer 发生了 . 新的任务是:

client 1: 0, 1, 2, 3, 4, 5, 6, 7, 8

client 2: 9, 10, 11, 12, 13, 14

但在重新 balancer 后,客户端1将不会消耗0-5的消息,客户端2将不会消耗9 .

我的消费者配置如下:

properties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
properties.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "false");
properties.put(ConsumerConfig.MAX_PARTITION_FETCH_BYTES_CONFIG, 8192);
properties.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);