在远程节点上创建akka actor而不使用路由器

时间:2016-09-27 13:36:29

标签: scala akka akka-cluster akka-remote-actor akka-remoting

我正在开发一个需要akka群集的应用程序。 我能够创建akka集群并创建演员并传递消息。

以下是我的配置:

relay.system {
    akka {
      loglevel = "INFO"
      actor {
        provider = "akka.cluster.ClusterActorRefProvider"
      }
      remote {
        log-remote-lifecycle-events = on
        netty.tcp {
          hostname = "vm1.iviws.local"
          port = 3503
        }
      }
      cluster {
        seed-nodes = [
          "akka.tcp://RelaySystem@vm1.iviws.local:3503"
          "akka.tcp://RelaySystem@vm2.iviws.local:3503"
        ]
        auto-down-unreachable-after = 30s
      }
    }
}

以下是我能够在远程节点上创建actor的示例代码。

import com.typesafe.config.ConfigFactory    
val config = ConfigFactory.load    
val akkaConfig = config.getConfig("relay.system")    
val actorSystem = ActorSystem("RelaySystem", akkaConfig)    
val roundRobinPool = RoundRobinPool(nrOfInstances = 4)    
val clusterRouterSettings = ClusterRouterPoolSettings(totalInstances = 4, maxInstancesPerNode = 2, allowLocalRoutees = true, useRole = None)    
val clusterRouterPool = ClusterRouterPool(roundRobinPool, clusterRouterSettings)    
val router = actorSystem.actorOf(clusterRouterPool.props(Props[Logger]))

上面的代码在路由器的帮助下创建了远程actor。

如果我试图在没有路由器帮助的情况下创建演员:val actorA = actorSystem.actorOf(Props[Logger]) 然后在我的本地系统上创建actor。

有没有办法在不使用路由器的情况下在远程节点上创建actor,或者没有告诉远程节点我想在哪里创建actor?

基本上我想要的是:val actorA = actorSystem.actorOf(Props[Logger])应该在集群中的任何随机节点上创建actor(包括本地节点)。

0 个答案:

没有答案