在 Akka 2.2.0 中,我有一个循环路由 Actor,我希望有一个自定义调度程序坐在上面。

在我的 application.conf 我有;

durable-dispatcher {
  mailbox-type = akka.actor.mailbox.filebased.FileBasedMailboxType
}

akka.actor.deployment {
  /notificationServiceWorkers {
    dispatcher = durable-dispatcher
    router = round-robin
    nr-of-instances = 5
  }
}

现在,当我尝试像这样创建这个 Actor 时;
ActorRef notificationServiceWorkers = akka.actorOf(Props.create(NotificationServiceActor.class)
   .withRouter(new FromConfig()), "notificationServiceWorkers")

调度程序不是从配置中选取的,它使用默认调度程序。

如果我删除 .withRouter ,Akka 会很好地获取调度程序的配置,但显然它不再路由。

如果我像这样添加 .withDispatcher
ActorRef notificationServiceWorkers = akka.actorOf(Props.create(NotificationServiceActor.class)
       .withDispatcher("durable-dispatcher")
       .withRouter(new FromConfig()), "notificationServiceWorkers")

这一切都有效。问题是(从 doco 中不清楚)如果我想从 application.conf 加载调度程序和路由器配置,那么为什么我需要在 Props 创建中同时提供这两个配置?这是一个错误吗?

最佳答案

您的部署未被采用的原因是路由被创建为路由器的子级,因此它们位于路径 notificationServiceWorkers/*

关于java - Akka Config - application.conf - 设置调度器和路由器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18436256/

10-14 10:47