3

关于集群路由器的问题(策略 = 循环组)。在集群设置中,我无法让它在我的路由之间循环。

我的设置如下:节点 A,在 ASP.NET 的上下文中启动它的参与者系统。在那里我有一个与actor A1 对话的API 控制器,然后这个actor 与我的路由器对话。然后,此路由器应将消息轮询到在节点 B 上创建的路由(使用工作角色)。

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

为了检查哪些路由接收到从节点 A 的路由器发送的消息,我只需在我的接收句柄中控制台记录 Self.Path。出于某种原因,同一个路由获取所有消息,并且它们没有分布在路由周围。

Se config 在下面的节点 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");

使用版本:

  • 阿卡 1.1.0
  • Akka.Cluster 1.1.0
  • Akka.Remote 1.1.0
4

1 回答 1

1

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

于 2016-07-11T08:09:12.883 回答