當使用Akka 2.0時,有沒有辦法讓ActorRef獲得一個遠程actor,但是我正在查找的actor的地址來自配置而不是以編程方式指定它?我想,例如使用可以從配置中查找akka演員地址嗎?
AkkaSystem("mysystem").actorFor("akka://[email protected]/user/whatever")
,但我希望能夠僅通過改變我的 application.conf遠程主機改變。
當使用Akka 2.0時,有沒有辦法讓ActorRef獲得一個遠程actor,但是我正在查找的actor的地址來自配置而不是以編程方式指定它?我想,例如使用可以從配置中查找akka演員地址嗎?
AkkaSystem("mysystem").actorFor("akka://[email protected]/user/whatever")
,但我希望能夠僅通過改變我的 application.conf遠程主機改變。
你可從包含在ActorSystem
的Config
對象的任意信息(或者你可以解析外部資源與ConfigFactory
自己):
val system = AkkaSystem("mysystem")
val config = system.settings.config
val remotePath = config.getString("my-config.serviceA")
val ref = system.actorFor(remotePath)
連同在上面給出的路徑在配置文件裏定義一些字符串。然後還可以使用配置庫的功率拼湊的路徑(例如因子出遠程節點的地址等):
可以在配置中定義部署路徑。
從Akka docs:
akka {
actor {
deployment {
/sampleActor {
remote = "akka.tcp://[email protected]:2553"
}
}
}
}
ActorRef actor = system.actorOf(Props.create(SampleActor.class), "sampleActor");