使用Akka 2.0时,有没有办法让一个ActorRef到一个远程actor,但是我正在查找的actor的地址来自配置而不是以编程方式指定它?我想,例如使用
AkkaSystem("mysystem").actorFor("akka://system@remotehost/user/whatever")
但我希望能够通过更改我的内容来更改remotehost application.conf。
答案 0 :(得分:4)
您可以从Config
中包含的ActorSystem
对象中检索任意信息(或者您可以自己用ConfigFactory
解析外部来源):
val system = AkkaSystem("mysystem")
val config = system.settings.config
val remotePath = config.getString("my-config.serviceA")
val ref = system.actorFor(remotePath)
与在上面给出的路径中的配置中定义一些字符串一起。然后,您还可以使用Config库的强大功能将路径拼凑在一起(例如,分解远程节点的地址等):
my-config {
remotenode = "akka://sys@remote.node:2134"
serviceA = ${my-config.remotenode}/service/A
}
答案 1 :(得分:0)
您可以在配置中定义部署路径 来自http://129.33.205.81/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.base.iseries.doc/ae/rweb_custom_props.html:
akka {
actor {
deployment {
/sampleActor {
remote = "akka.tcp://sampleActorSystem@127.0.0.1:2553"
}
}
}
}
ActorRef actor = system.actorOf(Props.create(SampleActor.class), "sampleActor");