【问题标题】:KafkaConsumer assignment() returns emptyKafkaConsumer assignment() 返回空
【发布时间】:2019-09-15 10:06:43
【问题描述】:

我正在使用

<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}")

为什么?有任何想法吗?谢谢

【问题讨论】:

    标签: java scala apache-kafka kafka-consumer-api


    【解决方案1】:

    这两个调用的区别在于获取元数据的方式。已弃用的poll 无限期地等待,直到成功检索到元数据,而另一个poll 只尝试一次,通常无法在非常短的时间间隔内连接到协调器(对于您的情况为 0),并且返回时没有任何用处。这就是为什么您在调用poll(Duration.ofMillis(0)) 一次后会看到一个空作业。

    【讨论】:

      猜你喜欢
      • 2013-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      • 2021-02-10
      • 1970-01-01
      • 2021-07-07
      • 2013-09-30
      相关资源
      最近更新 更多