Akka 无法让不同的远程参与者在不同的计算机上运行

Akka 无法让不同的远程参与者在不同的计算机上运行,akka,akka-remote-actor,Akka,Akka Remote Actor,我的问题是我可以在另一台从机上创建系统。但我不知道如何将零件分配到不同的机器上。IE master、slave1和slave2最终都位于同一台机器上,而不是分别位于ip 101102和103上 我使用主服务器来管理通过多个服务器的消息工作流。 因此,主服务器启动创建主服务器参与者,然后执行以下操作: 大师: 向从机1发送启动消息 从从属设备1获取成功消息,并将消息传递给从属设备2 从从属设备2接收成功消息,然后关闭系统 Slave1:从服务器接收消息并成功回复到master Slave2:从服务

我的问题是我可以在另一台从机上创建系统。但我不知道如何将零件分配到不同的机器上。IE master、slave1和slave2最终都位于同一台机器上,而不是分别位于ip 101102和103上

我使用主服务器来管理通过多个服务器的消息工作流。 因此,主服务器启动创建主服务器参与者,然后执行以下操作:

大师: 向从机1发送启动消息 从从属设备1获取成功消息,并将消息传递给从属设备2 从从属设备2接收成功消息,然后关闭系统 Slave1:从服务器接收消息并成功回复到master Slave2:从服务器接收消息并成功回复到主服务器 稍后,我想水平缩放每一个,但在此之前遇到了一个问题。 所有远程设备只能在一台机器上运行

我正在使用remote,因此部分配置如下所示:

akka {
  actor {
    provider = "akka.remote.RemoteActorRefProvider"
    deployment {
      "/masterCreatorActor/*" {
        remote = "akka.tcp://RemoteActorSystem@192.168.56.101:2552"
      }
      "/slave1Actor/*" {
        remote = "akka.tcp://RemoteActorSystem@192.168.56.102:2552"
      }
      "/slave2Actor/*" {
        remote = "akka.tcp://RemoteActorSystem@192.168.56.103:2552"
      }
    }
  }
创建actorSystem和master actor的代码

val config = ConfigFactory.load("remotecreation")
val system = ActorSystem("PromoAnalysisSystem", config)
def act = system.actorOf(Props(classOf[MasterCreatorActor],OnFinished _),
                   name = "masterCreatorActor" )
然后在master actor中,我使用slave1,在它接收到消息时这样做:

val slave1 = context.actorOf(Props[Slave1Actor],name = "slave1Actor")
slave1 ! slave1StartMessage  
因此,我可以在一台机器上托管所有系统。我也可以在一台机器上启动它,并让它在另一台远程机器上运行。但我无法让配置中的每个参与者在不同的机器上运行


我很愚蠢,但我看不出有什么办法

您尝试过/*/slave1Actor吗?假设您的意思是名称参数:不起作用。akka.actor.InvalidActorNameException:非法的演员名[/*/heartbeatActor],必须符合?:[-\w:@&=+,.!~*'.]|%\p{XDigit}{2}?:[-\w:@&=+,.!~*'$;]%\p{XDigit}{2}*。。。但这给了我一个想法。。我的意思是在配置中。/*/slave1Actor/*是他的意思
akka {
  actor {
    provider = "akka.remote.RemoteActorRefProvider"
    deployment {
      "/masterCreatorActor/*" {
        remote = "akka.tcp://RemoteActorSystem@192.168.56.101:2552"
      }
      "/*/slave1Actor/*" {
        remote = "akka.tcp://RemoteActorSystem@192.168.56.102:2552"
      }
      "/*/slave2Actor/*" {
        remote = "akka.tcp://RemoteActorSystem@192.168.56.103:2552"
      }
    }
  }