如何使用配置为akka中的路由器设置默认策略
How to set default strategy for a router in akka using configuration
如何使用akka配置为路由器设置默认监管策略?
这有效吗?
actor {
deployment {
default {
supervisor-strategy = "akka.actor.DefaultSupervisorStrategy"
}
/my-router {
router = balancing-pool
nr-of-instances = 3
}
}
}
搜索了一段时间后,我很惊讶地说,我认为这样做是不可能的。
如果你看reference.conf,你会发现没有这样的属性,如果不是监护人(/用户)。
我担心您将不得不按照规定以编程方式进行 here。
您的配置有效,但是 属性(主管策略)虽然可以从代码访问,但会被 akka 忽略。
我很高兴有人在这个问题上证明是错误的。
正如@Diego Martinoia 所说,在当前版本的 akka 中似乎无法通过路由器中的配置来设置监管策略,但您可以混合路由器的配置并以编程方式定义策略,java 例子是:
final SupervisorStrategy strategy = new OneForOneStrategy(10, Duration.create(1, TimeUnit.MINUTES),
Collections.<Class<? extends Throwable>>singletonList(Exception.class));
ActorRef router = system.actorOf(ApiAiActor.props(Http.get(system)).withRouter(FromConfig.getInstance()
.withSupervisorStrategy(strategy)),"router");
在配置中你可以有类似的东西:
akka {
actor.deployment {
/router {
router = round-robin-pool
nr-of-instances = 5
}
}
}
如何使用akka配置为路由器设置默认监管策略?
这有效吗?
actor {
deployment {
default {
supervisor-strategy = "akka.actor.DefaultSupervisorStrategy"
}
/my-router {
router = balancing-pool
nr-of-instances = 3
}
}
}
搜索了一段时间后,我很惊讶地说,我认为这样做是不可能的。
如果你看reference.conf,你会发现没有这样的属性,如果不是监护人(/用户)。
我担心您将不得不按照规定以编程方式进行 here。
您的配置有效,但是 属性(主管策略)虽然可以从代码访问,但会被 akka 忽略。
我很高兴有人在这个问题上证明是错误的。
正如@Diego Martinoia 所说,在当前版本的 akka 中似乎无法通过路由器中的配置来设置监管策略,但您可以混合路由器的配置并以编程方式定义策略,java 例子是:
final SupervisorStrategy strategy = new OneForOneStrategy(10, Duration.create(1, TimeUnit.MINUTES),
Collections.<Class<? extends Throwable>>singletonList(Exception.class));
ActorRef router = system.actorOf(ApiAiActor.props(Http.get(system)).withRouter(FromConfig.getInstance()
.withSupervisorStrategy(strategy)),"router");
在配置中你可以有类似的东西:
akka {
actor.deployment {
/router {
router = round-robin-pool
nr-of-instances = 5
}
}
}