Java Akka-如何重新启动路由器生成的子级?
我有一个Java Akka-如何重新启动路由器生成的子级?,java,akka,akka-supervision,Java,Akka,Akka Supervision,我有一个Actor,它使用路由器创建孩子。当其中一个孩子失败时。我在startegy收到了失败的通知。但是,Actor不会自行重新启动 private static SupervisorStrategy strategy = new OneForOneStrategy(10, Duration.create("1 minute"), throwable -> { Directive directive; if (throwab
Actor
,它使用路由器创建孩子。当其中一个孩子失败时。我在startegy收到了失败的通知。但是,Actor
不会自行重新启动
private static SupervisorStrategy strategy = new OneForOneStrategy(10, Duration.create("1 minute"),
throwable -> {
Directive directive;
if (throwable instanceof SocketTimeoutException) {
directive = SupervisorStrategy.restart();
} else {
directive = SupervisorStrategy.stop();
}
return directive;
});
我还发现,如果路由器
的子节点终止,那么路由器
不会自动生成新的子节点。而且,当路由器的所有子节点都终止时,路由器
也会自行终止
现在是一个百万美元的问题-什么是正确的方式来重新启动由路由器产生的子节点?似乎您正在使用池路由器(它启动自己的子节点)。相反,您想要使用的是一个组路由器(),在这种情况下,您创建子参与者并将其提供给路由器。这意味着你负责(你作为这些路由的父参与者)完全负责它们的生命周期。因此,您可以在父级中定义监管策略,然后按照您的要求执行所有工作。是的,我使用的是RoundRobinPool
。我会召集一个小组,并就此回复你。非常感谢。