集群路由器组的HOCON格式?

时间:2015-06-23 17:30:05

标签: akka.net

我已经将一个Akka.Net节点设置为群集中的种子节点,我称之为前端,另一个节点我称之为后端。在前端节点中,我在代码中配置了一个集群路由器组,这使我可以将消息从前端发送到任何加入角色后端的节点' (以循环方式)并且在/ 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 [].

1 个答案:

答案 0 :(得分:4)

如果没有看到完整的HOCON配置,很难说。好像你只想要一个支持群集的组路由器。没有什么明显的东西突然出现在我身上,但是在我开始寻找的时候会想到一些事情:

  1. 您是否指定了种子节点? frontend也需要自己作为种子节点。它将“自己加入”以启动集群。
  2. 仔细检查您是否拥有HOCON中Akka.Cluster的所有必要元素,包括指定akka.clusterakka.remote HOCON部分。
  3. /backend的配置是否在正确的HOCON部分内?需要在akka.actor.deployment
  4. 组路由器不需要max-nr-of-instances-per-node标志。这是池路由器限制它们部署到集群中给定节点的路由数量。
  5. 这是一个应该适用于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
        }
    }