Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将使用者偏移量重置为Kafka Streams的开头_Java_Stream_Apache Kafka_Offset_Consumer - Fatal编程技术网

Java 将使用者偏移量重置为Kafka Streams的开头

Java 将使用者偏移量重置为Kafka Streams的开头,java,stream,apache-kafka,offset,consumer,Java,Stream,Apache Kafka,Offset,Consumer,我正在使用Kafka streams,希望从Java开始重置一些消费者偏移量。 KafkaConsumer.seektobegining(…)听起来是正确的做法,但我使用Kafka流: KafkaStreams streams = new KafkaStreams(builder, props); ... streams.start(); 我猜,根据我定义的混凝土流管道,这将在引擎盖下创建几个消费者。我能拿到那些吗?或者是否有其他方法以编程方式重置偏移?因为您使用的是Kafka Streams

我正在使用Kafka streams,希望从Java开始重置一些消费者偏移量。
KafkaConsumer.seektobegining(…)
听起来是正确的做法,但我使用Kafka流:

KafkaStreams streams = new KafkaStreams(builder, props);
...
streams.start();

我猜,根据我定义的混凝土流管道,这将在引擎盖下创建几个消费者。我能拿到那些吗?或者是否有其他方法以编程方式重置偏移?

因为您使用的是Kafka Streams,所以您不仅需要重置使用者偏移,还需要重置Streams内部状态存储

幸运的是,Kafka提供了一个Streams应用程序重置工具


请参见

基于Hans Jespersens的回答,我成功地使用此代码来完成脚本在Java代码中的功能:

import kafka.tools.StreamsResetter;

StreamsResetter resetter = new StreamsResetter();
String[] args = {"--application-id", APP_ID, "--bootstrap-servers", KAFKA_SERVERS, "--input-topics", TEST_TOPIC_NAME, "--zookeeper", ZOOKEEPER};
resetter.run(args);
该类是我在maven中导入的kafka核心库的一部分,使用:

    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka_2.12</artifactId>
        <version>${kafka.version}</version>
    </dependency>

org.apache.kafka
卡夫卡2.12
${kafka.version}

这是我已经知道的,见上文。。。这里的关键字是以编程方式。重置工具是一个程序,它是开源的,所以答案是肯定的。您可以以编程方式重置使用者偏移量和流状态存储。