我已經多次通過文檔(http://doc.akka.io/docs/akka/2.1.4/scala/remoting.html),並通過這裏的例子(https://github.com/akka/akka/tree/master/akka-samples/akka-sample-remote)和其他人,我仍然無法弄清楚如何做我的想做。我找到的最接近的答案是這樣的:how to start remote actors in scala,但似乎比我想象的要不便得多。沒有一個新的ActorSystem遠程創建一個Akka演員
我有一個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")
}
}
看起來這將是一個相當常見的情況。是否有我缺少的東西,或者是否有一種很好的方法來實現這一點(根據我的配置應該是什麼樣子,或者我真正需要多少個ActorSystems)?我現在正在努力綜合一個好的解決方案。
如果你不想在目標節點上啓動JVM,那麼你如何期望它能夠工作?必須在需要定位遠程部署的節點上運行Akka系統,並且該遠程系統還必須配置遠程處理,以便監聽諸如此類的請求。所有你需要做的是,其餘的可以只是配置,說當你開始一個特定的演員,它的目標是一個特定的遠程節點。在引擎蓋下發生的事情很簡單。您是否期望Akka能夠爲您在遠程節點上奇蹟般啓動JVM? – cmbaxter
我刪除了這部分問題。我不知道我在期待什麼。我是否需要爲每臺可能想要生成ActorSystem的計算機分別配置一部分配置?或者,因爲他們都在做同樣的事情,我的IP地址遵循格式192.168.1。{n},其中n從1到12,它是否可以動態地確定主機運行的是什麼,以便在我的本地程序可以通過使用第n個遠程參與者在主機192.168.1。{n}上的規則訪問遠程參與者?我有什麼意義嗎? –