我遇到的问题是我可以在另一台奴隶机器上创建系统。但我无法弄清楚如何将零件分配到不同的机器上。 IE master,slave1和slave2都分别在同一台机器而不是ip 101,102和103。
我使用主服务器实质上通过多个服务器管理消息的工作流程。 因此,master启动时会创建主服务器actor,然后执行以下操作:
后来我想要横向扩展每一个 - 但在此之前遇到问题。 所有远程资料只能在一台机器上运行。
我正在使用远程,因此部分配置如下所示:
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都在不同的机器上运行。
我是愚蠢但却无法以何种方式看到! ;)
答案 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"
}
}
}