如何查找未在Kafka主题中删除的第一条消息

时间:2019-07-12 10:12:39

标签: java apache-kafka kafka-consumer-api

我有一个主题,并且其中包含一些消息。保留时间到期后,一部分消息被删除,包括一条带有偏移点的消息以及其后的许多消息。

如何找到该主题中现有的最早邮件?我听说API中有一些方法,但找不到。如果有人知道该怎么做,请提供帮助,因为在文档中搜索它已经对我造成了折磨。预先感谢。

2 个答案:

答案 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