Java Akka:如何让演员在主管身上引发异常

Java Akka:如何让演员在主管身上引发异常,java,akka,Java,Akka,我怎样才能知道哪个儿童演员对主管有异议。 基本上,我想处理其他事情,比如将失败记录到数据库,等等。。 在停止失败的演员之前。但为了这个,我必须知道到底是哪个演员 我有个例外 我的主管策略代码块像 /* stop task actor on unhandled exception */ private static SupervisorStrategy strategy = new OneForOneStrategy( 1, Duration.create(1, T

我怎样才能知道哪个儿童演员对主管有异议。 基本上,我想处理其他事情,比如将失败记录到数据库,等等。。 在停止失败的演员之前。但为了这个,我必须知道到底是哪个演员 我有个例外

我的主管策略代码块像

/* 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;
}
/*在未处理的异常上停止任务参与者*/
私有静态监管者策略=新的一对一策略(
1.
创建时长(1,时间单位:分钟),
新函数(){
@凌驾
公共监管策略指令apply(可丢弃的t)引发异常{
返回SupervisorStrategy.stop();
}
}
);
@凌驾
公共监督员战略监督员战略(){
回报策略;
}

当您观看孩子时,您将收到带有
actor
字段和其他信息的消息。另见。您还可以通过重写子参与者自身的方法来处理其内部的失败。

如果您阅读了以下关于的链接,您可以看到,在监督策略中,您可以根据以下信息获取失败的子参与者参考:

如果战略是在监督参与者内部宣布的(相反 对于一个单独的类)其决策者可以访问 以线程安全的方式执行者,包括获取对 当前失败的子级(可用作失败的
getSender
) 信息)


因此,如果你在你的监督策略中使用
getSender
,你应该能够确定是哪个孩子产生了异常,并采取相应的行动。

我不确定我是否同意这个答案。这里不需要显式地监视孩子,我也不要求在任何地方都显式地监视孩子。不管是否明确——每个孩子都会被监视。同意答案,但不确定像“记录失败”这样的事情是否应该在那里处理,因为策略的意图是选择对参与者生命周期的影响。