对于我的使用Kafka消息的应用,是否有任何理由不为[{1}} KafkaConsumer.poll(millisecs)
拨打Long.MAX_VALUE
?
我看到许多代码传递的内容类似于1000milli,但不会millsecs
是理想的,只要等到那里并在主题中出现消息时触发。
如果您可以传入Long.MAX_VALUE
,那么以{1}}调用poll()
有什么意义?
只是为了清楚地说明代码:
Long.MAX_VALUE
答案 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
}
}