問題文: 並行して処理する必要がある証券のポートフォリオがあります。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
この設計は正しいですか? akka を使用してこの一般的な問題を実装するためのより良い/よりクールな方法はありますか?