Потребитель не может опросить вновь созданный раздел, пока он не будет перезапущен - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть Spring Boot проект, который реализует Kafka.Приложение использует producer для создания сообщения на topic в определенном partition.partitions на topic создаются динамически во время выполнения.После добавления нового partition уже запущенный consumer для данного topic не видит partition, но видит более старые.Однако, когда я перезагружаю consumer, the consumer начинает видеть новый partition и успешно начинает с него polling.

Мой вопрос: могу ли я сделать эту работу без перезапуска потребителя, и еслиЯ могу как?Я не могу найти это нигде в официальной документации.

Создание раздела:

 Map<String,NewPartitions> increaseTopicPartitions = new HashMap<String,NewPartitions>();
            increaseTopicPartitions.put("nodesTopic", NewPartitions.increaseTo(totalPartitions + 1));
            BaseProcessor.adminClient.createPartitions(increaseTopicPartitions);

Печать количества разделов:

 int totalPartitions = cluster.partitionCountForTopic(topic);

1 Ответ

0 голосов
/ 21 ноября 2018

Потребитель увидит новые разделы только при обновлении метаданных кластера.По умолчанию это происходит только каждые 5 минут (см. metadata.max.age.ms в настройках Consumer ).

Как только новые разделы обнаружены, они должны быть правильно назначены, и потребитель должен начать получать сообщения.

...