можно поискать адрес актера akka из конфигурации? - PullRequest
1 голос
/ 03 февраля 2012

При использовании Akka 2.0, есть ли способ получить ActorRef для удаленного субъекта, но получить адрес запрашиваемого субъекта из конфигурации, а не задавать его программно?Я хочу, например, использовать

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

, но я хочу иметь возможность изменить удаленный хост, просто изменив мой application.conf.

Ответы [ 2 ]

4 голосов
/ 03 февраля 2012

Вы можете получить произвольную информацию из объекта 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
}
0 голосов
/ 13 ноября 2015

Вы можете определить путь развертывания в конфигурации.
От Документы Akka :

akka {
  actor {
    deployment {
      /sampleActor {
        remote = "akka.tcp://sampleActorSystem@127.0.0.1:2553"
      }
    }
  }
}

ActorRef actor = system.actorOf(Props.create(SampleActor.class), "sampleActor");
...