akka.net循环组路由器 - 仅路由到一个routee

时间:2016-07-11 07:26:15

标签: akka.net akka.net-cluster

关于群集路由器的问题(strategy = round-robin-group)。我无法在群集设置中的路由之间进行循环。

我的设置如下: 节点A,在ASP.NET的上下文中启动其actor系统。在那里,我有一个API控制器与演员A1对话,然后这个演员与我的路由器交谈。然后,此路由器应将消息循环到其在节点B上创建的路由(使用辅助角色)。

节点B在Windows服务的上下文中创建其actor系统。我已经仔细检查了节点B上的所有路由都是实际创建的(在服务启动时完成)。

为了检查接收从节点A的路由器发送的消息的路由器,我只是在接收句柄中控制日志Self.Path。出于某种原因,同一个受理人获取所有消息,并且它们不会分布在路由器周围。

在下面的节点A上配置。

/workerRouter {
   router = round-robin-group
   routees.paths = [
      "/user/workers/worker0",
      "/user/workers/worker1", 
      "/user/workers/worker2",
      "/user/workers/worker3",
      "/user/workers/worker4",
      "/user/workers/worker5",
      "/user/workers/worker6",
      "/user/workers/worker7",
      "/user/workers/worker8",
      "/user/workers/worker9"
  ]
  cluster {
     enabled = on
     use-role = worker
  }
}

使用以下代码实例化路由器:

ActorSystem.ActorOf(Props.Empty.WithRouter(FromConfig.Instance), "workerRouter");

使用版本:

  • Akka 1.1.0
  • Akka.Cluster 1.1.0
  • Akka.Remote 1.1.0

1 个答案:

答案 0 :(得分:1)

正如Gitter中所讨论的,在nr-of-instances = 10下添加/workerRouter会使路由器接受所有路由。