Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/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
Stream (卡夫卡)流-foreach内部foreach_Stream_Apache Kafka Streams - Fatal编程技术网

Stream (卡夫卡)流-foreach内部foreach

Stream (卡夫卡)流-foreach内部foreach,stream,apache-kafka-streams,Stream,Apache Kafka Streams,我有一段代码,它在KStream上迭代并检查是否满足条件。在这种情况下,它调用另一个方法来执行其他处理。代码如下所示: stream1.foreach((k,v)->{ 如果(某些条件){ System.out.println(“触发连接”); joinStreams(); } } }); 现在,joinStreams()方法的主体如下所示(仅用于测试目的) private static void joinStreams(){ System.out.println(“已开始加入”); stre

我有一段代码,它在KStream上迭代并检查是否满足条件。在这种情况下,它调用另一个方法来执行其他处理。代码如下所示:

stream1.foreach((k,v)->{
如果(某些条件){
System.out.println(“触发连接”);
joinStreams();
}
}
});
现在,
joinStreams()
方法的主体如下所示(仅用于测试目的)

private static void joinStreams(){
System.out.println(“已开始加入”);
stream2.foreach((k,v)->System.out.println(“OK”);
}
调用
joinStreams()
时,它只打印“已启动的连接”并永远挂起。当我从
main()
直接调用它时,它会打印“startedjoin”,后面跟着与流中消息数量相同的“OK”(这是它的正常行为)。 我的问题是:是什么导致了这种奇怪的结果?
注:据我所知,问题在于foreach(来自
joinStreams()
)内部的foreach(来自
stream1
)。

你不能这样做

通过调用类似于
stream1.foreach
,您正在构建流拓扑。一旦构建了整个拓扑,您就可以使用类似于
newkafkastreams(拓扑,streamingConfig).start()的东西启动它


您必须理解,
foreach
的主体只有在流处理拓扑正在执行(正在运行)时才会被调用。因此,在您的代码中,对
stream2.foreach
(用于构建拓扑)的调用发生在拓扑构建和启动之后,这是没有意义的。

您就是做不到这一点

通过调用类似于
stream1.foreach
,您正在构建流拓扑。一旦构建了整个拓扑,您就可以使用类似于
newkafkastreams(拓扑,streamingConfig).start()的东西启动它


您必须理解,
foreach
的主体只有在流处理拓扑正在执行(正在运行)时才会被调用。因此,在您的代码中,对
stream2.foreach
(用于构建拓扑)的调用发生在拓扑构建和启动之后,这是没有意义的。

是的,解决了它。我错过了这些关于拓扑的细节。谢谢是的,这就解决了。我错过了这些关于拓扑的细节。谢谢