我正在尝试根据时间戳重播Kafka主题数据。我能够从起始位置查找数据,但是随后我需要检查每个分区中记录的结束时间戳。当我尝试比较记录的时间戳和endtimestamp时,循环在第一个分区处中断。
for(TopicPartition partition : records.partitions() ) {
for (ConsumerRecord<Long, String> record : records) {
if (record.timestamp() >= endtimeStamp) {
consumer.seektoend(partition);
break;
}
}
}
答案 0 :(得分:1)
您的循环将始终在第一个分区(如果至少有一条带有timestamp()> = endtimeStamp的记录)期间中断,因为对于每个分区,您将遍历所有记录。
for (ConsumerRecord<Long, String> record : records) {
if (record.timestamp() >= endtimeStamp) {
consumer.seektoend(partition);
break;
}
}
==>无论分区是什么,您都在这里进行所有记录。您将一次又一次调用同一分区的seekToEnd()
Yannick