java - Kafka - 在 Java 中聆听主题的比 poll() 更好的替代方法是什么?

标签 java apache-kafka kafka-consumer-api

我正在尝试用 Java 创建一个消费者客户端。我意识到 poll() 函数已贬值。听卡夫卡的话题有哪些选择?

我的代码:

KafkaConsumer< String, UserSegmentPayload > kc = new KafkaConsumer<>(props2);
kc.subscribe(Collections.singletonList(topicName));
while (true) {
    ConsumerRecords<String, UserSegmentPayload> records = kc.poll(100);
    for (ConsumerRecord<String, UserSegmentPayload> record : records) {
        System.out.printf("offset = %d, key = %s, value = %s\n",
        record.offset(), record.key(), record.value());
    }
}

最佳答案

原因poll()poll(long)不推荐使用的是它们可能会无限期地阻塞(即使在第二种情况下,指定了超时)。此行为的根本原因是这些方法中的初始元数据更新可能会永远阻塞(请参阅 here )。相反,您应该使用 poll(Duration) -方法KafkaConsumer .因此,在您的代码中,您所要做的就是替换 kc.poll(100)kc.poll(Duration.ofMillis(100)) .

关于java - Kafka - 在 Java 中聆听主题的比 poll() 更好的替代方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59943786/

相关文章:

java - JPA - 未标记级联 PERSIST 的 ArrayList 关系

hadoop - 从外部连接kafka的问题

apache-kafka - 将协调员标记为组死亡(Kafka)

spring - Kafka Consumer 和 Spark-Kafka-Consumer 的区别

java - 枚举和通用常量具体方法

java - 什么时候可以使用公共(public)字段?

filter - Kafka connect (Single message transform) 行过滤

apache-kafka - Kafka 消费者每个分区是否有一个打开的连接?

java - Confluence 中的 WikiToXhtmlMigrator

git - Publisher 如何将消息发布到 Apache Kafka 中的主题?