具有远程节点的 akka 集群的路由配置

routing configuration for akka cluster with remote nodes

我有几个远程节点位于不同的计算机上并连接在集群中。 因此,在 db 中写入日志的是具有 'logging' 角色的节点之一上的日志系统。 我选择使用路由将消息从其他节点传递到记录器。 我有一个主要演员和三个儿童演员的节点。他们每个人都必须将日志发送到记录器节点。 我的路由器配置:

akka.actor.deployment {
  /main/loggingRouter = {
    router = adaptive-group
    nr-of-instances = 100
    cluster {
      enabled = on
      routees-path = "/user/loggingEvent"
      use-role = logging
      allow-local-routees = on
    }
  }
  "/main/*/loggingRouter" = {
    router = adaptive-group
    nr-of-instances = 100
    cluster {
      enabled = on
      routees-path = "/user/loggingEvent"
      use-role = logging
      allow-local-routees = on
    }
  }
}

然后我用这段代码在每个演员中创建路由器

val logging = context.actorOf(FromConfig.props(), name = "loggingRouter")

并发送

logging ! LogProtocol("msg")

在那之后,记录器只接收来自一个儿童演员的消息。我不知道如何调试它,但我猜我为此应用了错误的模式。

这项任务的最佳做法是什么?谢谢

来自记录器节点的参与者:

system.actorOf(Logging.props(), name = "loggingEvent")

问题出在同名路由器中。我明白了,好的模式是在 main actor 中创建一个路由器并将其发送到 children.