如果一个Actor在执行过程中出现某些未处理的异常,系统如何处理?
在Akka框架内,父Actor可以对子Actor进行监督,监控其行为是否存在异常。监督策略分为:OneForOneStrategy和AllForOneStrategy。
OneForOneStrategy策略:父Actor只对出问题的子Actor进行处理,如重启或停止等。它是框架默认的策略,适用于大部分场景。
AllForOneStrategy策略:父Actor会对出问题的子Actor及它所有的兄弟都进行处理。它适用于各个Actor联系紧密的场景,如果多个Actor之间只要有一个Actor出现异常,则宣告整个任务失败。
在一个指定的策略中,我们可以对Actor的失败情况进行处理,如无视异常继续执行、重启、停止Actor。要指定这些监督行为,只需构造一个自定义的监督策略即可。




--参考文献《实战Java高并发程序设计》
网友评论