7
問題文:私は、並列に処理する必要がある有価証券のポートフォリオを持っています。 Javaでは、私は各セキュリティを処理するためにスレッドプールを使用し、カウントダウンにラッチを使用します。完了したら、いくつかのマージなどを行います。Akkaを使用したフォーク&ジョイン
私は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
は、この設計正しいです返信、およびアッカを使用して、この共通の問題を実装するためのより良い/クーラー方法はありますか?
は本当にDEFデバッグこの提案を愛し、予想通り、私はそれを分割し、問題をデバッグするEventhandler.info文の束を追加する必要がありましたまで働く:( –
[T](T:T):T = {イベントハンドラ.info(t); t} –
akkaは素晴らしいです! –