我是Akka Stream的学习者。我想在Akka Stream中创建一个流媒体流。我知道SubFlow
并尝试SubFlow
的一些方法,但我无法做我想做的事情。以下代码代表我想要做的事情,但它有一些问题。
我想处理下面代码为mapAsync
的流流(该流程意味着映射流的流并使用接收器运行流的流)。
// Create a stream of streams
val streamOfStreams: Source[Source[Int, Unit], Unit] =
Source(1 to 10)
// concat a stream and Source.single(elem)
.fold(Source.empty[Int])((stream, elem) => stream ++ Source.single(elem))
streamOfStreams
// Print elements of the stream of streams by Sink.foreach
.mapAsync(1){stream => stream.runForeach(e => println("inner " + e))}
// Print the result of stream.runForeach()
.runForeach(futureResult => println("futureResult: " + futureResult))
输出在这里
inner 1
inner 2
inner 3
inner 4
inner 5
inner 6
inner 7
inner 8
inner 9
inner 10
futureResult: ()
代码问题是fold(Source.empty)(_ ++ Source.single(_))
。虽然在这种情况下,源Source(1 to 10)
只有很少的元素,但实际上我想处理一个包含大量元素的流。因此,当流有很多元素时,fold
会花费很多时间并导致错误。
所以我想告诉我如何创建流的流。谢谢你的阅读。