アクターに一度に1 つのメッセージparent
を送信するアクターがあると仮定します。child
子プロセスが現在のメッセージの処理を完了すると、新しいメッセージを子プロセスに送信することを親に通知します。
子が特定のメッセージでクラッシュした場合でもこのループを維持するために、SupervisorStrategy を親に追加しました。
private static SupervisorStrategy strategy =
new OneForOneStrategy(10, Duration.create("1 minute"),
new Function<Throwable, SupervisorStrategy.Directive>() {
@Override
public SupervisorStrategy.Directive apply(Throwable t) {
if (t instanceof NullPointerException) {
return resume();
} else {
return escalate();
}
}
});
その考えは、子供に何が起こっても再開し、親は次のメッセージを送ることができるということです。
しかし、次のメッセージを送信するために、親はどのようにしてエラーが発生したかを知るのでしょうか?
子供に何かが起こった親にとっての引き金は何ですか?
オーバーライドする必要がある「onChileError」メソッドのようなものはありますか?
(Java over Scala の例を評価します)
ありがとう。