Kafka Stream - 只有一个实例从分区读取

Kafka Stream - only one instance reads from partitions

我正在尝试启动我的应用程序的 2 个实例来读取来自具有 30 个分区的同一主题的消息,但只有我启动的第一个实例读取消息(来自所有 30 个分区)。

两个实例具有相同的配置:

private Properties streamConfig() {
    streamConfig = new Properties();
    streamConfig.setProperty(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
    streamConfig.setProperty(StreamsConfig.APPLICATION_ID_CONFIG, "myApp");
    streamConfig.put(StreamsConfig.NUM_STREAM_THREADS_CONFIG, 30);
    streamConfig.put(StreamsConfig.REPLICATION_FACTOR_CONFIG, 3);
    streamConfig.setProperty(StreamsConfig.producerPrefix(ProducerConfig.ACKS_CONFIG), "all");
    return streamConfig;
}

我做错了什么?

谢谢。

尝试设置较低的 NUM_STREAM_THREADS_CONFIG。每个线程实际上是一个单独的消费者。所以可能发生的是首先将所有分区分配给它。当第二个实例开始重新平衡时,它不一定会在实例之间平均分割分区(或者甚至将某些东西分配给第二个实例)。在任何情况下,在您描述的设置中,当两个实例都启动时,30 个线程将 运行 空闲。