можно ли найти адрес актера akka из конфигурации?

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

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

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


person stew    schedule 03.02.2012    source источник


Ответы (2)


Вы можете получить произвольную информацию из объекта 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://[email protected]:2134"
  serviceA = ${my-config.remotenode}/service/A
}
person Roland Kuhn    schedule 03.02.2012

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

akka {
  actor {
    deployment {
      /sampleActor {
        remote = "akka.tcp://[email protected]:2553"
      }
    }
  }
}

ActorRef actor = system.actorOf(Props.create(SampleActor.class), "sampleActor");
person Alex Stanovsky    schedule 13.11.2015