如何使用配置为akka中的路由器设置默认策略



如何使用akka配置为路由器设置默认监督策略?

这个有效吗?

 actor {
    deployment {
      default {
        supervisor-strategy = "akka.actor.DefaultSupervisorStrategy"
      }
      /my-router {
        router = balancing-pool        
        nr-of-instances = 3
      }
   }
}

搜索了一段时间后,我惊讶地说,我认为不可能做到这一点。

如果你查看reference.conf,你会意识到如果不是监护人(/user),就没有这样的属性。

我担心你将不得不像这里所说的那样以编程的方式来做这件事。

您的配置是有效的,但该属性(监管策略)虽然可以从代码中访问,但会被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
          }
        }
    }

最新更新