集群路由器组的 HOCON 格式?

HOCON format for cluster router group?

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

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 [].

如果没有看到完整的 HOCON 配置,很难说。似乎您只想要一个集群感知组路由器。没有什么明显的东西跳出来,但这里有一些我会开始寻找的地方:

  1. 你指定你的种子节点了吗? frontend 也需要自己作为种子节点。它将"join itself"启动集群。
  2. 仔细检查您是否拥有 HOCON 中 Akka.Cluster 的所有必要元素,包括指定 akka.clusterakka.remote HOCON 部分。
  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
    }
}