【发布时间】:2017-02-02 15:39:50
【问题描述】:
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 消息感到困惑。
当一个actor创建一个子actor时,它不是已经默认观看了吗? 如果那个子actor过早死亡,默认策略是正确重启它吗?
上述代码sn-p中Terminated消息的作用是什么? (取自akka网站:http://doc.akka.io/docs/akka/2.4/scala/actors.html)
如果子角色终止,WatchActor 会收到该消息吗?但它正在向lastSender() 发送“完成”消息,而lastSender 在这种情况下是子actor,不是吗?
【问题讨论】: