可以从配置中查找akka actor地址吗?

时间:2012-02-03 07:29:43

标签: akka

使用Akka 2.0时,有没有办法让一个ActorRef到一个远程actor,但是我正在查找的actor的地址来自配置而不是以编程方式指定它?我想,例如使用

AkkaSystem("mysystem").actorFor("akka://system@remotehost/user/whatever")

但我希望能够通过更改我的内容来更改remotehost application.conf。

2 个答案:

答案 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");