import akka.actor.{ Actor, Props, Terminated }
class WatchActor extends Actor {
val child = context.actorOf(Props.empty, "child")
context.watch(child) // <-- this is the only call needed for registration
var lastSender = context.system.deadLetters
def receive = {
case "kill" =>
context.stop(child); lastSender = sender()
case Terminated(`child`) => lastSender ! "finished"
}
}
我在這裏對Terminated
消息感到困惑。終止消息的目的是什麼
當一個演員創建一個小孩演員時,是不是默認它已經在看? 如果該小孩演員過早死亡,默認策略是重新啓動它的正確性?
上述代碼段中Terminated
消息的用途是什麼? (取自akka網站:http://doc.akka.io/docs/akka/2.4/scala/actors.html)
如果小孩演員終止,WatchActor
會得到該消息?但它是發送lastSender()
「完成」的消息,而lastSender
是這個情況下的小孩演員嗎?
這是真的,但我想如果孩子的演員是由watchActor創建的,它不需要顯式調用context.watch。如果它是另一個演員,那麼對我來說是有道理的。 –
@coolbreeze是的,阿卡的做法有點「深奧」,我添加了一些小的「P.S.」。關於它,但當然要用一粒鹽來表達我的意見:) – dk14