KafkaConsumer assignment () возвращает пустое значение - PullRequest
0 голосов
/ 26 апреля 2019

Я использую

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>2.0.1</version>
</dependency>

Следующий фрагмент кода возвращает непустые присвоенные разделы, но poll(0) устарело.

val records = kafkaConsumer.poll(0) // <= deprecated
logInfo(s"Dummy call ${records.count()}")

val partitions = kafkaConsumer.assignment()
logInfo(s"partitions=${partitions}")

Следующий возврат пусто разделов:

val records = kafkaConsumer.poll(Duration.ofMillis(0)) // <= not working
logInfo(s"Dummy call ${records.count()}")

val partitions = kafkaConsumer.assignment()
logInfo(s"partitions=${partitions}")

Почему? Есть идеи? Спасибо

1 Ответ

0 голосов
/ 26 апреля 2019

Разница между этими двумя вызовами заключается в способе получения метаданных.Устаревший poll ждет неопределенно, пока метаданные не будут успешно извлечены, тогда как другой poll пытается только один раз, часто не в состоянии соединиться с координатором в течение очень короткого интервала времени (0 для вашего случая), и возвращается без ничего полезного.Поэтому после вызова poll(Duration.ofMillis(0)) один раз вы видите пустое назначение.

...