我已经将一个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 [].
答案 0 :(得分:4)
如果没有看到完整的HOCON配置,很难说。好像你只想要一个支持群集的组路由器。没有什么明显的东西突然出现在我身上,但是在我开始寻找的时候会想到一些事情:
frontend
也需要自己作为种子节点。它将“自己加入”以启动集群。Akka.Cluster
的所有必要元素,包括指定akka.cluster
和akka.remote
HOCON部分。/backend
的配置是否在正确的HOCON部分内?需要在akka.actor.deployment
。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
}
}