繁体   English   中英

无法获得kafka主题中的消息数

[英]Unable to get number of messages in kafka topic

我对kafka相当陌生。 我用Java创建了一个示例生产者和消费者。 使用生产者,我能够将数据发送到kafka主题,但无法使用以下使用者代码获得该主题中的记录数。

    public class ConsumerTests {
        public static void main(String[] args) throws Exception {
            BasicConfigurator.configure();

            String topicName = "MobileData";
            String groupId = "TestGroup";
            Properties properties = new Properties();
            properties.put("bootstrap.servers", "localhost:9092");
            properties.put("group.id", groupId);
            properties.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
            properties.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

            KafkaConsumer<String, String> kafkaConsumer = new KafkaConsumer<>(properties);
            kafkaConsumer.subscribe(Arrays.asList(topicName));


try {
  while (true) {
    ConsumerRecords<String, String> consumerRecords = consumer.poll(100);
    System.out.println("Record count is " + records.count());
  }
} catch (WakeupException e) {
  // ignore for shutdown
} finally {
  consumer.close();
}

}
}

我在控制台中没有任何异常,但是即使主题中有消息,consumerRecords.count()始终返回0。 如果我缺少某些东西来获取记录详细信息,请告诉我。

poll(...)调用通常应处于循环中。 在进行分区分配时,初始poll(...)总是有可能不返回任何数据(取决于超时)。 这是一个例子:

try {
  while (true) {
    ConsumerRecords<String, String> records = consumer.poll(100);
    System.out.println("Record count is " + records.count());
  }
} catch (WakeupException e) {
  // ignore for shutdown
} finally {
  consumer.close();
}

有关更多信息,请参见此相关文章

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM