理论教育 Scala语言基础与开发实战:Hook函数调用

Scala语言基础与开发实战:Hook函数调用

时间:2023-11-24 理论教育 版权反馈
【摘要】:这个方法是用来完成清理、准备移交给新的Actor实例的最佳位置。它的缺省实现的是终止所有的子Actor并调用postStop。在Actor重启过程中所有发送到该Actor 的消息将像平常一样被放进邮箱队列中。

Scala语言基础与开发实战:Hook函数调用

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中。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈