Akka:如何让演员在主管上引起异常

whb*_*whb 2 java akka

我怎样才能让哪位儿童演员在主管上有例外.基本上我想在停止失败的演员之前处理其他事情,比如将数据库记录失败等等.但为此我必须确切地知道哪个演员有例外.

我的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)

cmb*_*ter 5

如果您阅读以下有关Fault Tolerance的链接,您可以看到在监督策略中,您可以根据以下信息获取失败的子actor ref:

如果战略监督的演员内声明的(而不是一个单独的类)的决胜局访问演员的所有内部状态的线程安全的方式,包括获得到目前没孩子的引用(可作为getSender的失败消息).

因此,如果您使用getSender内部监督策略,您应该能够确定哪个孩子产生了异常并采取相应行动.