我正尝试使用Apache Kafka中某个主题开头的所有消息。我可以使用当时产生的消息。这是我的提取消息代码。
public void consume() {
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Arrays.asList(topic));
while (true) {
ConsumerRecords<String, String> records = consumer.poll(1000);
for (ConsumerRecord<String, String> record : records) {
System.out.printf("\"%s\"\n", record.value());
}
}
}
答案 0 :(得分:1)
除了设置enable.auto.commit=false
以外,尝试为属性{{1}}设置新的/随机值,然后尝试一下。另外,如果您对跟踪消费者的位置不感兴趣,但总是想从头开始,则还可以设置{{1}}以避免污染偏移量主题。
希望有帮助。
谢谢。
答案 1 :(得分:0)
订阅主题后,可以使用seekToBeginning
方法来设置主题分区开始处的偏移量。当然,它对每个分区都是有效的,因为具有不同分区的主题具有不同的开始偏移(如果发生了消息删除)。
答案 2 :(得分:0)
控制台使用者生成一个随机的使用者组ID来完成此任务,并设置auto.offset.reset=earliest
确保关闭使用者对象,以防止在Zookeeper中添加大量临时使用者组ID