1.启动Hook 启动Actor后,它的preStart会被立即执行。可以在preStart方法中做相应的准备工作,或注册启动其他的Actor,preStart方法如例10-6所示。
【例10-6】preStart Hook方法。
2.重启Hook
所有的Actor都是被监管的,并且以某种失败处理策略与另一个Actor连接在一起。如果在处理一个消息的时候抛出异常,Actor将被重启。这个重启过程包括上面提到的Hook。
1)要被重启的Actor的preRestart被调用,携带着导致重启的异常,以及触发异常的消息;如果重启并不是因为消息的处理而发生的,所携带的消息为None,例如,当一个监管者没有处理某个异常继而被它自己的监管者重启时。这个方法是用来完成清理、准备移交给新的Actor实例的最佳位置。它的缺省实现的是终止所有的子Actor并调用postStop。(www.daowen.com)
2)调用actorOf工厂方法创建新的实例。
3)新的Actor的postRestart方法被调用,携带着导致重启的异常信息。Actor的重启会替换掉原来的Actor对象;重启不影响邮箱的内容,所以对消息的处理将在postRestart回调函数返回后继续,触发异常的消息不会被重新接收。在Actor重启过程中所有发送到该Actor 的消息将像平常一样被放进邮箱队列中。
3.终止Hook
一个Actor终止后,它的postStop回调函数将被调用,这可以用来取消该Actor在其他服务中的注册。这个回调函数保证在该Actor的消息队列被禁止后才运行,之后发给该Actor的消息将被重定向到ActorSystem的deadLetters中。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。