Java 如何使用ApacheKafka中以前的消息

Java 如何使用ApacheKafka中以前的消息,java,apache-kafka,kafka-consumer-api,Java,Apache Kafka,Kafka Consumer Api,我想阅读主题中的特定消息。例如,主题中有12000条消息,我只想阅读2000到5000条。卡夫卡有什么规定吗?或者我可以使用java消费代码来阅读某个主题中的特定消息吗 Java consumer API为您提供了“seek”方法,更具体地说是以下方法 seek(TopicPartition partition, long offset) 可以指定从提供的偏移量开始读取邮件,但不能提供结束偏移量。另一件事是指定偏移量与分区更相关,因此,必须提供TopicPartition作为第一个参数 考虑一

我想阅读主题中的特定消息。例如,主题中有12000条消息,我只想阅读2000到5000条。卡夫卡有什么规定吗?或者我可以使用java消费代码来阅读某个主题中的特定消息吗

Java consumer API为您提供了“seek”方法,更具体地说是以下方法

seek(TopicPartition partition, long offset)
可以指定从提供的偏移量开始读取邮件,但不能提供结束偏移量。另一件事是指定偏移量与分区更相关,因此,必须提供
TopicPartition
作为第一个参数


考虑一下,如果主题分区被压缩和/或某些消息被删除,那么偏移量不再是连续的,因此可能会有一些漏洞。因此,如果要从偏移量为2000的邮件读取到偏移量为5000的邮件,或者要从第2000条邮件读取到第5000条邮件,则应注意(在这种情况下,序号位置可能不等于偏移量,即第2000条邮件位于偏移量2100处,因为删除前有100条邮件).

是否有任何方法可以获取范围内的消息?没有使用提供的API的自动方法。处理这种情况是应用程序的责任。@omi您可以始终只计算轮询循环中的消息数,并检查它们的偏移量,因为Kafka会按照我们的配置将消息持续一段时间。所以,如果我使用来自主题的每条消息,并且如果我向该主题添加一个新的消费者,它将能够将这些消息视为新消息并能够使用它们。请确认。谢谢如果当前消费者组仍处于活动状态,则必须是其他消费者组中的消费者。您可以从头开始阅读主题。这些任意数字只是单个分区的一部分吗?没有一个主题的“2000到5000”概念,只有一个主题中的一个分区