无法让不同的远程actor在不同的机器上运行

时间:2014-05-09 07:26:58

标签: akka akka-remote-actor

我遇到的问题是我可以在另一台奴隶机器上创建系统。但我无法弄清楚如何将零件分配到不同的机器上。 IE master,slave1和slave2都分别在同一台机器而不是ip 101,102和103。

我使用主服务器实质上通过多个服务器管理消息的工作流程。 因此,master启动时会创建主服务器actor,然后执行以下操作:

  • 主人:
    1. 向slave 1发送启动消息
    2. 从slave 1获取成功消息并将消息传递给slave 2
    3. 从slave 2获取成功消息,然后关闭系统
    4. Slave1:从服务器接收消息并成功回复master
    5. Slave2:从服务器接收消息并成功回复master

后来我想要横向扩展每一个 - 但在此之前遇到问题。 所有远程资料只能在一台机器上运行。

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

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和主actor的代码

val config = ConfigFactory.load("remotecreation")
val system = ActorSystem("PromoAnalysisSystem", config)
def act = system.actorOf(Props(classOf[MasterCreatorActor],OnFinished _),
                   name = "masterCreatorActor" )

然后在主actor中我通过在收到消息时使用slave1来执行此操作:

val slave1 = context.actorOf(Props[Slave1Actor],name = "slave1Actor")
slave1 ! slave1StartMessage  

所以我可以在1台机器上托管系统。我也可以在一台机器上启动它,并让它全部在另一台远程机器上运行。但是我不能让配置中的每个actor都在不同的机器上运行。

我是愚蠢但却无法以何种方式看到! ;)

1 个答案:

答案 0 :(得分:0)

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"
      }
    }
  }