我是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/
答案 0 :(得分:3)
可以使用akka futures完成。来自你的父演员:
Future.sequence
或.traverse
将期货数组映射到文件数组的未来.pipe
以将数组发送回父actor 如果提取每个文件最适合不是未来的演员,每个未来可能是ask
到一个子演员池的结果。