Akka流-并行处理的源代码?

Akka流-并行处理的源代码?,akka,akka-stream,Akka,Akka Stream,我想使用流获取和处理多个资源。我有一个用户ID列表,通过将ID映射到其他链接的迭代器来遍历该列表 到目前为止,它工作得很好,但是可以看到,尽管使用了mapsynchunordered,流源还是一个接一个地同步处理。我想知道这是否是因为我使用FileIO.toPath作为接收器?还是我遗漏了什么 代码非常简单: import akka.stream._ import akka.stream.scaladsl._ implicit val system = ActorSystem("Local")

我想使用流获取和处理多个资源。我有一个用户ID列表,通过将ID映射到其他链接的迭代器来遍历该列表

到目前为止,它工作得很好,但是可以看到,尽管使用了
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
和last
map
@expert之后添加
.async
。我查看了
LikesExtractor
中的调试输出,是否可以同步
LikesExtractor.extractUserList