有什么方法可以从 Java API 中的特定偏移量开始使用 kafka 主题?

Is there any way to start consuming kafka topics from a specific offset in Java API?

我正在使用 Kafka Stream API。当我启动我的应用程序时,有时会出现间隙,我想从特定的偏移量开始使用。最早或最晚都不是我想要的。

streamProperties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");

我正在寻找的是这样一种场景,比如我在配置文件中设置偏移量或以毫秒为单位的日期,并从该点开始使用。请问有没有办法实现?

配置 auto.offset.reset 仅在尚未提交偏移量时对您的应用程序的首次启动有效。如果提交偏移量,应用程序将始终从提交的偏移量恢复处理。

在 Kafka Streams 中,没有 API 来显式设置起始偏移量。消费者 API 会通过 Consumer#seek().

允许这样做

对于 Kafka Streams,获得所需行为的一种方法是停止应用程序,使用 bin/kafka-consmer.group.sh(或者更好的 bin/kafka-streams-application-reset.sh),并提交所需的起始偏移量。如果您之后启动应用程序,它将获取提交的偏移量并从那里开始处理。