有什么理由不用Long.MAX_VALUE调用KafkaConsumer.poll()?

时间:2017-04-15 02:11:38

标签: apache-kafka

对于我的使用Kafka消息的应用,是否有任何理由不为[{1}} KafkaConsumer.poll(millisecs)拨打Long.MAX_VALUE

我看到许多代码传递的内容类似于1000milli,但不会millsecs是理想的,只要等到那里并在主题中出现消息时触发。

如果您可以传入Long.MAX_VALUE,那么以{1}}调用poll()有什么意义?

只是为了清楚地说明代码:

Long.MAX_VALUE

1 个答案:

答案 0 :(得分:0)

基本上你可以在每个队列中用poll()调用Long.MAX_VALUE,除非你想在队列没有适当时间的数据时做一些特别的事情。

例如,假设您在Kafka中有两个主题A和B,而主题A具有更高的优先级。在您的代码中,您希望在A上进行轮询,如果A没有记录,则轮询和(可能)从B中检索数据。在这种情况下,您必须将合理的超时传递给poll()

while (true) {
        ConsumerRecords<String, LogLine> recordsA = consumerA.poll(1000);
        if (!records.isEmpty()) {
            // does something with recordsA
            continue;
        }
        else {
            ConsumerRecords<String, LogLine> recordsB = consumerB.poll(1000);
            // does something with recordsB
        }
}