Akka Actor Askを使用して型安全性を維持するにはどうすればよいですか?または、tellを優先してaskの使用を避けますか?
Akka Actorを呼び出す?
か、または呼び出すと、aが返され、を介して明示的なキャストを実行する必要があります。ask
Future[Any]
future.mapTo[MyType]
このタイプの安全性を失うのは好きではありません。Futuresを直接(アクターなしで)使用する場合Future[MyType]
、型の安全性を明示的に返し、維持することができます。
私の特定のユースケースでは、アクターがメッセージを2人の子アクターに委任し、それらのアクターからの結果を集約して、それを親の送信者に返します。私の親のreceiveメソッドは、AkkaDocsのこのアプローチに似ています。
http://doc.akka.io/docs/akka/2.0/scala/futures.html#For_Comprehensions
val f1 = actor1 ? msg
val f2 = actor2 ? msg
val f3 = for {
a ← f1.mapTo[Int]
b ← f2.mapTo[Int]
c ← ask(actor3, (a + b)).mapTo[Int]
} yield c
私のユースケースを達成するためのより良い方法はありますか?