Kafka Stream - только один экземпляр читает из разделов - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь запустить 2 экземпляра моего приложения для чтения сообщений из одной и той же топики c с 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;
}

Что я делаю не так?

Спасибо.

1 Ответ

2 голосов
/ 03 февраля 2020

Попробуйте установить меньшее значение NUM_STREAM_THREADS_CONFIG. Каждый поток на самом деле отдельный потребитель. Итак, что может произойти, так это сначала получить все разделы, назначенные ему. Когда второй экземпляр начинает происходить перебалансирование, но он не обязательно разделяет разделы между экземплярами (или даже назначает что-то второму экземпляру). В любом случае при настройке, которую вы описали, 30 потоков будут работать вхолостую, когда оба экземпляра работают.

...