我正在使用Scala 2.10/Akka 2.1/Play 2.1,並且我有一個關於firstCompletedOf的問題。如何識別firstCompletedOf正文中的結果發件人?請看下面的代碼:akka firstCompletedOf,確定消息發件人
val futureString: Future[String] = myTestActor.ask(Message).mapTo[String]
val timeoutFuture = play.api.libs.concurrent.Promise.timeout("timed_out", 5 seconds)
Async {
Future.firstCompletedOf(Seq(futureString, timeoutFuture)).map {
case result: String => {
println("got message " + result)
}
}
}
在某些時候,裏面myTestActor
有一個sender ! "actor_result"
,但超時可能是第一位的。
是否有一種快速,方便的方法來識別結果的發件人? sender
不起作用,我認爲檢查字符串(如果等於timed_out
)將會很骯髒。
我不知道這是一個答案,所以我把它在一個評論...「告訴,不要問!」此外,當你確實告訴時,告訴接收方在哪裏指示任何答覆/答覆/結果。這使得可以更容易地以不同方式重用和重組的演員的更靈活的拓撲結構。 – 2013-03-08 16:55:36