Deb*_*Roy 7 parallel-processing scala future actor akka
问题陈述:我有一系列需要以并行方式处理的证券.在Java中,我使用线程池来处理每个安全性,并使用锁存器来倒计时.完成后我会做一些合并等.
所以我给我的SecurityProcessor(这是一个演员)发了消息,等待所有的期货完成.最后,我使用MergeHelper进行后处理.SecurityProcessor采用安全性,进行一些I/O处理并回复安全性
val listOfFutures = new ListBuffer[Future[Security]]()
var portfolioResponse: Portfolio = _
for (security <- portfolio.getSecurities.toList) {
val securityProcessor = actorOf[SecurityProcessor].start()
listOfFutures += (securityProcessor ? security) map {
_.asInstanceOf[Security]
}
}
val futures = Future.sequence(listOfFutures.toList)
futures.map {
listOfSecurities =>
portfolioResponse = MergeHelper.merge(portfolio, listOfSecurities)
}.get
Run Code Online (Sandbox Code Playgroud)
这个设计是否正确,是否有更好/更酷的方式来使用akka实现这个常见问题?
val futureResult = Future.sequence(
portfolio.getSecurities.toList map { security => (actorOf[SecurityProcessor].start() ? security).mapTo[Security] }
) map { securities => MergeHelper.merge(portfolio, securities) }
Run Code Online (Sandbox Code Playgroud)