3

我已经设置了一个 Akka.Net 节点作为集群中的种子节点,我称之为前端,另一个节点我称之为后端。在前端节点中,我在代码中配置了一个集群路由器组,这使我可以将消息从前端发送到任何加入角色“后端”的节点(以循环方式)并且在 /user/ 有一个演员后端。我正在运行的代码如下所示:

system.ActorOf(Props.Empty.WithRouter(
    new ClusterRouterGroup(
        new RoundRobinGroup("/user/backend"),
        new ClusterRouterGroupSettings(10, false, "backend", ImmutableHashSet.Create("/user/backend"))
)));

现在我想将此配置移动到配置文件中(hocon)。我将如何去做这样我只需要下面的代码来实例化它?

system.ActorOf(Props.Empty.WithRouter(FromConfig.Instance), "backend");

我的尝试只产生了没有任何线索的异常。

/backend {
  router = round-robin-group
  routees.paths = ["/user/backend"]
  cluster {
    enabled = on
    max-nr-of-instances-per-node = 1
    allow-local-routees = off
    use-role = backend
  }
}

有什么好的提示吗?我在异常中获得的唯一信息是:

Configuration problem while creating [akka://ClusterSystem/user/backend] with router dispatcher [akka.actor.default-dispatcher] and mailbox  and routee dispatcher [akka.actor.default-dispatcher] and mailbox [].
4

1 回答 1

4

没有看到完整的 HOCON 配置很难说。似乎您只需要一个支持集群的组路由器。没有什么明显的跳出我,但这里有一些我开始寻找的地方:

  1. 您是否指定了种子节点?frontend需求本身也作为种子节点。它将“加入自身”以启动集群。
  2. 仔细检查您是否拥有 HOCON 中的所有必要元素Akka.Cluster,包括指定akka.clusterakka.remoteHOCON 部分。
  3. 配置是否/backend在正确的 HOCON 部分内?需要在akka.actor.deployment.
  4. 您不需要max-nr-of-instances-per-node组路由器的标志。这是为了让池路由器限制它们部署到集群中给定节点上的路由数量。

frontend根据我所看到的,这是一个适用于节点的示例配置。但是,如果您可以添加完整的 HOCON,那将会很有帮助。

akka {
    actor {
        provider = "Akka.Cluster.ClusterActorRefProvider, Akka.Cluster"
        deployment {
            /backend {
                router = broadcast-group
                routees.paths = ["/user/backend"]
                cluster {
                  enabled = on
                  allow-local-routees = on
                  use-role = backend
                  }
                }
        }
    }

    remote {
        log-remote-lifecycle-events = DEBUG
        helios.tcp {
          hostname = "127.0.0.1"
          port = 0
        }
    }

    cluster {
      seed-nodes = ["akka.tcp://ActorSystem@127.0.0.1:1234"] # specify your full frontend seed node address here
      roles = ["frontend"]
      auto-down-unreachable-after = 30s
    }
}
于 2015-06-23T21:57:03.550 回答