如何获取actorRef或失败节点的名称?如果异常发生一次,我需要重新启动节点。如果发生异常> 1,然后我需要恢复。
我的想法是让主管存储给定节点有多少次异常 - 但我无法弄清楚哪个节点失败了。也许这种方法很糟糕。
x是失败节点有给定异常的次数。
OneForOneStrategy() {
case _: FileNotFoundException =>
// Need to know how many times node n has had this exception and restart/resume as required.
if(x == 1)
Restart
else
Resume
case _: Exception => Stop
}
答案 0 :(得分:1)
您可以捕获FileNotFoundException
并将具有ActorRef字段的CustomException
抛出到异常的Actor(self)。然后在OneForOne中,您将捕获CustomException
字段设置为问题参与者的ActorRef
。所以现在你有一个对失败的actor的引用,然后检查你在主管里面描述的异常计数,然后调用是否重启/恢复。
答案 1 :(得分:1)
实际上在主管的决策者中你可以通过sender()方法获得失败孩子的ActorRef。