生命周期管理

生命周期钩子也作为 DSL 元素公开,下面显示的方法的后续调用将替换相应钩子的内容:

val a = actor(new Act {
  whenStarting { testActor ! "started" }
  whenStopping { testActor ! "stopped" }
})

如果 actor 的逻辑生命周期与重启周期匹配(即在重启之前执行停止和之后启动时),则上述内容就足够了。如果不需要,请使用以下两个钩子:

val a = actor(new Act {
  become {
    case "die" ⇒ throw new Exception
  }
  whenFailing { case m @ (cause, msg) ⇒ testActor ! m }
  whenRestarted { cause ⇒ testActor ! cause }
})