私はAkkaのドキュメントを読んでいますが、今度はUntypedActorsというセクションにあります。私はいくつかの例を試してみることにしました。ここでは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);
}
}
子供
private static class AnotherUntypedActor extends UntypedActor{
public static Props props(){
return Props.create(AnotherUntypedActor.class);
}
public void onReceive(Object message) throws Exception {
System.out.println("My: " + message);
throw new RuntimeException("Crashed: " + getSelf());
}
}
メイン:そう
public static void main(String[] args) throws TimeoutException {
ActorSystem system = ActorSystem.create();
Inbox inbox = Inbox.create(system);
ActorRef actorRef = system.actorOf(MyUntypedActor.props());
inbox.send(actorRef, "Message");
}
、私の子役経験不足と私はth何とか親に通知しておかなければならないはずです。監督が実際に何をするん
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]
:
しかし、私が受け取ったが、このでしたか?俳優のせいで何が起こったのですか?ログにエラーメッセージが表示されます。 supervisorStrategyの意味は何ですか?これは、スーパーバイザ戦略を使用することにより
OneForOneStrategy(-1,Duration.Inf,true)
したがって、戦略の主な目的は、例外がスローされた場合の対処方法を定義することです。実際の決定は決定関数内で行われます。デフォルトでは何もしません(私が知る限り)、そうですか? – user3663882
かなり。そして、私が覚えている限り、デフォルトは 'Restart'です。 –