Akka流-并行处理的源代码?
我想使用流获取和处理多个资源。我有一个用户ID列表,通过将ID映射到其他链接的迭代器来遍历该列表 到目前为止,它工作得很好,但是可以看到,尽管使用了Akka流-并行处理的源代码?,akka,akka-stream,Akka,Akka Stream,我想使用流获取和处理多个资源。我有一个用户ID列表,通过将ID映射到其他链接的迭代器来遍历该列表 到目前为止,它工作得很好,但是可以看到,尽管使用了mapsynchunordered,流源还是一个接一个地同步处理。我想知道这是否是因为我使用FileIO.toPath作为接收器?还是我遗漏了什么 代码非常简单: import akka.stream._ import akka.stream.scaladsl._ implicit val system = ActorSystem("Local")
mapsynchunordered
,流源还是一个接一个地同步处理。我想知道这是否是因为我使用FileIO.toPath
作为接收器?还是我遗漏了什么
代码非常简单:
import akka.stream._
import akka.stream.scaladsl._
implicit val system = ActorSystem("Local")
implicit val materializer = ActorMaterializer()
val ec = ExecutionContext.fromExecutor(Executors.newFixedThreadPool(Runtime.getRuntime.availableProcessors() * 4))
val src: Source[Int, NotUsed] = Source[Int](Conf.startId() to Conf.endId())
val flow = Flow[Int].mapAsyncUnordered(5)(userId ⇒ Future(LikesExtractor.extractUserList(userId))(ec))
.collect {
case Some(Likes(self, likes)) ⇒
likes.zip(Iterator.continually(self))
}.mapConcat(_.toList)
.map {
case ((liker, likee)) ⇒ ByteString(s"${likee.username},${liker.username}\n")
}
val f = src via flow runWith FileIO.toPath(new File(Conf.basePath()).toPath)
import concurrent.duration._
Await.ready(f, 20 minute)
sys.exit(0)
xref您是如何确定它正在被串行处理的?还可以尝试在
collect
和lastmap
@expert之后添加.async
。我查看了LikesExtractor
中的调试输出,是否可以同步LikesExtractor.extractUserList
?