我怎样才能让哪位儿童演员在主管上有例外.基本上我想在停止失败的演员之前处理其他事情,比如将数据库记录失败等等.但为此我必须确切地知道哪个演员有例外.
我的supervisor战略代码块就像
/* stop task actor on unhandled exception */
private static SupervisorStrategy strategy = new OneForOneStrategy(
1,
Duration.create(1, TimeUnit.MINUTES),
new Function<Throwable, SupervisorStrategy.Directive>() {
@Override
public SupervisorStrategy.Directive apply(Throwable t) throws Exception {
return SupervisorStrategy.stop();
}
}
);
@Override
public SupervisorStrategy supervisorStrategy() {
return strategy;
}
Run Code Online (Sandbox Code Playgroud)
如果您阅读以下有关Fault Tolerance的链接,您可以看到在监督策略中,您可以根据以下信息获取失败的子actor ref:
如果战略监督的演员内声明的(而不是一个单独的类)的决胜局访问演员的所有内部状态的线程安全的方式,包括获得到目前没孩子的引用(可作为
getSender的失败消息).
因此,如果您使用getSender内部监督策略,您应该能够确定哪个孩子产生了异常并采取相应行动.