【发布时间】:2017-08-17 09:48:47
【问题描述】:
假设我有一个 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 示例)
谢谢。
【问题讨论】:
标签: java akka akka-supervision