积累和订购儿童演员的回应?

时间:2014-09-26 18:45:22

标签: scala akka

我是Scala和Akka的新手,我一直在读一本关于Akka的书。我无法找到一个合理的解决方案,我认为这是与Actors的常见用例。

让我们假设你有一个父演员收到大量工作的请求(假设你需要去网络下载100个文件),所以父演员将工作拆分并将其路由到10个孩子,以便我们一次下载多个文件。

不知何故,我需要将所有文件按顺序返回到父actor 。这样做会有什么好的设计模式?

I found a link在我的搜索中他们似乎想出了一个很好的方法来实现这一点,但因为博客实际上没有展示如何使用这个例子(因为他们只是提供了一个代码片段),我是一个scala noob,我不明白如何将它付诸实践: http://www.ccri.com/2014/01/22/accumulating-responses-from-child-actors-and-transitive-message-ordering/

1 个答案:

答案 0 :(得分:3)

可以使用akka futures完成。来自你的父演员:

  1. 创建一个包含100个期货的数组,每个期货都会获取一个文件
  2. 使用Future.sequence.traverse将期货数组映射到文件数组的未来
  3. 将其映射到.pipe以将数组发送回父actor
  4. 如果提取每个文件最适合不是未来的演员,每个未来可能是ask到一个子演员池的结果。