如何使用Akka Actor ask和维护类型安全?或者避免使用ask而倾向于tells?
在Akka Actor上调用?
或ask
时,会返回一个Future[Any]
,我必须通过future.mapTo[MyType]
进行显式强制转换。
我不喜欢失去这个类型的安全性。如果我直接使用Futures (没有参与者),我可以显式地返回Future[MyType]
并维护类型安全。
我的特定用例涉及一个参与者将其消息委托给两个子参与者,然后聚合来自这两个参与者的结果,并将结果返回给父参与者的发送者。我父母的接收方法类似于Akka文档中的这种方法:
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
有没有更好的方法来实现我的用例?
https://stackoverflow.com/questions/13630585
复制相似问题