使用akka的Scala异步计算
我试图设计一个程序,将获得一组输入(让我们说一些数字) 它将对每个输入进行一些计算并收集结果 我需要这是异步计算 看着scala和akka,它看起来很完美,但我似乎无法理解我的演员的设计,谁会这么做 例如:为每个计算创建一个参与者?还有一个演员来收集所有的结果 使用akka的设计有什么想法或文件吗使用akka的Scala异步计算,scala,asynchronous,akka,typesafe,Scala,Asynchronous,Akka,Typesafe,我试图设计一个程序,将获得一组输入(让我们说一些数字) 它将对每个输入进行一些计算并收集结果 我需要这是异步计算 看着scala和akka,它看起来很完美,但我似乎无法理解我的演员的设计,谁会这么做 例如:为每个计算创建一个参与者?还有一个演员来收集所有的结果 使用akka的设计有什么想法或文件吗 谢谢 看看这个示例项目 这是一个akka actor系统的示例,该系统有一个获得输入集的actor 对于每个输入,is将创建一个子参与者,该子参与者将计算该值,并最终显示所有子参与者的结果 自述:
谢谢 看看这个示例项目 这是一个akka actor系统的示例,该系统有一个获得输入集的actor 对于每个输入,is将创建一个子参与者,该子参与者将计算该值,并最终显示所有子参与者的结果 自述: 代码:
我不会直接回答你的问题,因为Nimrod007已经回答了。我不确定您的实际应用程序是什么,但我只是想告诉您,使用直接期货可能要简单得多
import scala.concurrent._
import scala.concurrent.duration._
import ExecutionContext.Implicits.global
object Example extends App {
val futures = Range(1, 5).map(i => Future { i + 10 })
val result = Future.fold(futures)(List.empty[Int])((answers, value) => value :: answers)
result.onComplete(answersTry => answersTry.foreach(println))
Thread.sleep(1000)
}
它与Nimrod007的代码相同,但要短得多
我不是说你不应该用Akka。但是你应该考虑什么是最适合你的应用程序。< / P>刚才到项目的根文件夹,你需要所有的输入来开始计算吗?或者每个输入有一个计算?你对结果做了什么?现在我得到了一组输入,我需要根据输入类型进行一些计算,在所有计算完成后,我需要得到结果集,并对其进行更多计算。这是简短而清晰的,但我需要使用akka的示例(该系统以后会做更多的事情,以后可能会发布)另一个需要考虑的问题是,在akka,我可以更轻松地处理故障