我正在使用Kafka 0.10.2并从Kafka接收记录,我有一个消费者调查循环,如下所示:
while (true) {
ConsumerRecords<Long, String> records = consumer.poll(2000);
int count= 0;
long lasttimestamp = 0;
long lastOffset = 0;
for (ConsumerRecord<Long, String> record : records) {
if (record.timestamp() >= end_time_Stamp) {
reachedEnd = true;
break;
}
result.add(record);
}
if (reachedEnd) break;
if (records == null || records.isEmpty()) break; // dont wait for records
}
在轮询循环之前,我们通过使用“offsetsForTimes”API查找偏移量来寻求开始时间戳。我们得到记录,直到我们到达结束时间戳。
使用consumer.poll API获取记录。如何知道消费者轮询超时应该传递的是什么?目前我们只是通过反复试验来实现,看看哪种方法有效。我认为应该有更好的方法。
问题:
答案 0 :(得分:1)
int counter=0;
while(true) {
consumer.poll(1000);
for (...) {
}
if (records == null || records.isEmpty()) {
counter++;
if (counter > 10)
break;
} else {
counter = 0;
}
}