我有一个主题,并且其中包含一些消息。保留时间到期后,一部分消息被删除,包括一条带有偏移点的消息以及其后的许多消息。
如何找到该主题中现有的最早邮件?我听说API中有一些方法,但找不到。如果有人知道该怎么做,请提供帮助,因为在文档中搜索它已经对我造成了折磨。预先感谢。
答案 0 :(得分:1)
您可以使用Consumer API中的beginningOffsets()
方法来查找最早的消息。
例如:
Properties configs = new Properties();
configs.put("bootstrap.servers", "localhost:9092");
configs.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
configs.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
try (KafkaConsumer<String, String> consumer = new KafkaConsumer<>(configs);) {
Map<TopicPartition, Long> offsets = consumer.beginningOffsets(Collections.singletonList(TP));
System.out.println(offsets);
}
这将打印出类似的内容
{offset-test-0 = 0}
在此示例中,偏移量0是可用的最早的偏移量。
答案 1 :(得分:0)
您可以将kafka-console-consumer
与--max-messages 1
和--from-beginning
结合使用,以获取最早的消息:
kafka-console-consumer --bootstrap-server localhost:9092 --topic topic_name --from-beginning --max-messages 1