Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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
Apache kafka 重新启动kafka streams应用程序时,以前的空分区上缺少事件_Apache Kafka_Apache Kafka Streams - Fatal编程技术网

Apache kafka 重新启动kafka streams应用程序时,以前的空分区上缺少事件

Apache kafka 重新启动kafka streams应用程序时,以前的空分区上缺少事件,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,我有一个奇怪的问题,我无法理解如何解决。我有一个kafka streams应用程序2.1.0,它从一个大约有40个分区的主题中读取内容。分区正在使用范围分区策略,因此目前其中一些分区可能完全为空 我的问题是,在应用程序停机期间,其中一个空分区被激活,并向其中写入了大量事件。但是,当应用程序被还原时,它会从其他分区读取所有事件,但会忽略已存储到前一个空分区的事件。对于特定主题,应用程序具有OffsetResetPolicy LATEST。最重要的是,当新消息到达特定分区时,它确实会使用它们,并以某

我有一个奇怪的问题,我无法理解如何解决。我有一个kafka streams应用程序2.1.0,它从一个大约有40个分区的主题中读取内容。分区正在使用范围分区策略,因此目前其中一些分区可能完全为空

我的问题是,在应用程序停机期间,其中一个空分区被激活,并向其中写入了大量事件。但是,当应用程序被还原时,它会从其他分区读取所有事件,但会忽略已存储到前一个空分区的事件。对于特定主题,应用程序具有OffsetResetPolicy LATEST。最重要的是,当新消息到达特定分区时,它确实会使用它们,并以某种方式绕过以前的消息

我的假设是uu consumer_offset在恢复时没有指定分区的任何条目,但是如何避免这种情况而不丢失事件。我的意思是这个话题已经存在了 具有指定数量的分区


这听起来有人熟悉吗?如果我遗漏了什么,我是否需要为卡夫卡设置一些参数,因为我无法理解为什么会发生这种情况?

这是预期的行为

您的空分区在_消费者_偏移量中没有提交的偏移量。如果分区没有提交的偏移量,则使用auto.offset.rest中指定的偏移量策略来决定从哪个偏移量开始使用事件

如果auto.offset.reset设置为LATEST,则您的Streams应用程序将仅在分区中的最新偏移量开始使用,即在停机期间添加的事件之后,并且它将仅使用停机后写入分区的事件

如果auto.offset.reset设置为“最早”,您的Streams应用程序将从分区中最早的偏移量启动,并在停机期间读取写入分区的事件


正如@mazaneica在对您的问题的评论中提到的,auto.offset.reset只影响没有提交偏移量的分区。因此,您的非空分区将是正常的,即Streams应用程序将使用停机前停止的事件。

您不应该使用最早的分区进行auto.offset.reset吗?当Kafka中没有初始偏移量或当前偏移量不再存在时该怎么办…某些分区已经有记录,因此如果我在主题中使用最早的偏移量,将导致重新处理这些分区上的数据。再次,auto.offset.reset仅在卡夫卡中没有初始偏移或当前偏移不再存在[即过期]时生效。如果您的客户端已经读取了一些分区并提交了偏移量,它将在重新启动后继续读取以前提交的偏移量。好的,您是对的,我的错,如果您具有相同的应用程序id,它将按照您提到的那样工作