Java 理解Akka中的主管策略

Java 理解Akka中的主管策略,java,akka,Java,Akka,我正在阅读Akka文档,现在我在关于的部分。我决定尝试一些例子: 以下是我的演员: 母公司 private static class MyUntypedActor extends UntypedActor{ public void onReceive(Object message) throws Exception { System.out.println("Recieved: " + message); } @Override public

我正在阅读Akka文档,现在我在关于的部分。我决定尝试一些例子:

以下是我的演员:

母公司

private static class MyUntypedActor extends UntypedActor{

    public void onReceive(Object message) throws Exception {
        System.out.println("Recieved: " + message);
    }

    @Override
    public void preStart(){
        getContext().actorOf(AnotherUntypedActor.props()).tell("Process it", getSelf());
    }

    public static Props props(){
        return Props.create(MyUntypedActor.class);
    }
}
孩子

主要内容:

因此,我的孩子演员经历了失败,我认为it应该以某种方式通知家长

但我得到的是:

Recieved: Message
My: Process it 
[ERROR] [07/14/2016 19:05:13.726] [default-akka.actor.default-dispatcher-4] [akka://default/user/$a/$a] Crashed: Actor[akka://default/user/$a/$a#-950392568]
监督实际上做什么?儿童演员犯了什么错误?我只是在日志中收到一条错误消息。监管战略是什么意思?默认设置为

OneForOneStrategy(-1,Duration.Inf,true)

通过使用监督策略,您可以决定在监督参与者失败时应该对其执行什么操作。您必须重写父参与者中的
supervisionStrategy()
方法并定义策略。即(不确定是否正确,因为我使用Scala表示Akka)

在这种情况下,如果发生
SomeException
,将重新启动actor。否则,它将被停止。你可以从四种策略中选择一种。


提示:创建特定的异常

因此,该策略的主要目的是定义一种在抛出异常时如何作出反应的方法。而实际的决策是在decider函数中做出的。默认情况下,它什么也不做(据我所知),对吧?差不多。就我所记得的,默认值是
Restart
Recieved: Message
My: Process it 
[ERROR] [07/14/2016 19:05:13.726] [default-akka.actor.default-dispatcher-4] [akka://default/user/$a/$a] Crashed: Actor[akka://default/user/$a/$a#-950392568]
OneForOneStrategy(-1,Duration.Inf,true)
@Override
    public SupervisorStrategy supervisorStrategy() {
        return strategy;
    }

    private static SupervisorStrategy strategy =
            new OneForOneStrategy(10, Duration.create("1 minute"),
                    t -> {
                        if (t instanceof SomeException) {
                            return restart();
                        } else {
                            return stop();
                        }
                    });