我正在与Kafka合作,并试图从中消耗数据。从下面一行,我可以从Kafka轮询数据。
while (true) {
ConsumerRecords<byte[], <byte[]> records = consumer.poll(Long.MAX_VALUE);
for (ConsumerRecord<byte[], <byte[]> record : records) {
// retrieve data
}
}
我的问题是,通过提供Long.MAX_VALUE
作为超时,与我提供200
作为超时相比,我获得了什么好处。什么是将要运行生产的系统的最佳实践。
任何人都可以向我解释高超时与低超时之间的差异以及哪些应该在生产系统中使用?
答案 0 :(得分:5)
设置MAX_VALUE是一种消耗的同步消息,在我们从轮询中返回一些内容之前会一直等待,而设置为较低的值会让您有机会决定除了等待之外还做其他事情。应该使用哪个取决于您的实际情况。