当使用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");