Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在没有新ActorSystem的情况下远程创建Akka actor_Scala_Jvm_Akka_Actor_Remote Actors - Fatal编程技术网

Scala 在没有新ActorSystem的情况下远程创建Akka actor

Scala 在没有新ActorSystem的情况下远程创建Akka actor,scala,jvm,akka,actor,remote-actors,Scala,Jvm,Akka,Actor,Remote Actors,我已经阅读了几次文档()和这里的示例()以及其他内容,但我仍然不知道如何做我想做的事情。我找到的最接近的答案是:,但这似乎比我想象的要麻烦得多 我有12台机器要处理。我想提出以下几点: val system = ActorSystem("DistributedSystem", ConfigFactor.load.getConfig("distsys")) val master = system.actorOf(Props(new Master(...)), "master") override

我已经阅读了几次文档()和这里的示例()以及其他内容,但我仍然不知道如何做我想做的事情。我找到的最接近的答案是:,但这似乎比我想象的要麻烦得多

我有12台机器要处理。我想提出以下几点:

val system = ActorSystem("DistributedSystem", ConfigFactor.load.getConfig("distsys"))
val master = system.actorOf(Props(new Master(...)), "master")
override def preStart() = {
    for (i <- 0 until 11) {
        // I want each of these actors to be created remotely on 
        // a different machine
        context.actorOf(Props(new RemoteChild(...)), s"child$i")
    }
}
然后在主控器内部,沿着以下路线:

val system = ActorSystem("DistributedSystem", ConfigFactor.load.getConfig("distsys"))
val master = system.actorOf(Props(new Master(...)), "master")
override def preStart() = {
    for (i <- 0 until 11) {
        // I want each of these actors to be created remotely on 
        // a different machine
        context.actorOf(Props(new RemoteChild(...)), s"child$i")
    }
}
覆盖def preStart()={

对于(i,我认为听起来您想要做的是将一组参与者部署到一组远程节点,然后将它们放在本地路由器后面,将消息传递给路由器,让路由器将工作分配给远程节点。要做到这一点,您可以尝试以下方法:

val addresses = for(i <- 1 until 12) 
  yield AddressFromURIString(s"akka://RemoteSys@192.168.1.$i:2553")

val routerRemote = system.actorOf(Props[RemoteChild].withRouter(
  RemoteRouterConfig(RoundRobinRouter(12), addresses)))

val地址=用于(i)如果您不想在目标节点上启动JVM,那么您希望它如何工作?必须有一个Akka系统在一个节点上启动并运行,您希望在该节点上进行远程部署,并且该远程系统还必须配置远程处理,以便其侦听此类请求。您所要做的就是这样,其余的可以是JU不要这样说,当你启动一个特定的参与者时,它的目标是一个特定的远程节点。考虑到引擎盖下实际发生的事情,这很简单。你是否希望Akka为你神奇地启动远程节点上的JVM?我删除了这部分问题。我不知道我在期待什么。我只需要一个se吗为我可能想要生成ActorSystem的每台机器分离部分配置?或者因为它们都在做相同的事情,我的ip地址遵循192.168.1的格式。{n}当n从1到12时,它能动态地计算出它运行的主机是什么吗?这样在我的本地程序中,我就可以通过使用第n个远程参与者在主机192.168.1上的规则来访问远程参与者。{n}?我说得通吗?