如何在Apache Kafka中使用以前的消息

时间:2018-08-07 06:30:07

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

我想从主题中阅读特定的消息。例如,主题中有12000条消息,我只希望从2000读到5000。卡夫卡有什么规定吗?还是可以使用Java消费者代码从主题中读取特定消息?

1 个答案:

答案 0 :(得分:0)

Java消费者API为您提供了“搜索”方法,更具体地说,以下一种方法

seek(TopicPartition partition, long offset)

您可以指定从提供的偏移量开始读取消息,但不能提供结尾的偏移量。另一件事是,指定偏移量与分区的关系更大,因此,必须提供TopicPartition作为第一个参数。

请考虑一下,如果压缩了主题分区和/或删除了某些消息,则偏移量不再是连续的,因此您可能会有一些漏洞。因此,如果您想从偏移量为2000的消息中读取到偏移量为5000的消息,或者要从第2000条消息中读取到第5000条消息(在这种情况下,顺序位置可能不等于偏移量,例如,第2000条消息的偏移量为2100,因为删除前有100条消息。