Из документации есть только две формы метода выбора актера:
Def ActorSelection (путь: ActorPath): АктерВыбор
Создайте akka.actor.ActorSelection из заданного пути, который анализируется на наличие подстановочных знаков (внутренне они заменяются регулярными выражениями). Не предпринимается никаких попыток проверить существование какой-либо части предоставленного пути, рекомендуется отправить сообщение и собрать ответы, чтобы разрешить совпадающий набор акторов.
def acterSelection (путь: строка): ActorSelection
Создайте akka.actor.ActorSelection из заданного пути, который анализируется на наличие подстановочных знаков (внутренне они заменяются регулярными выражениями). Не предпринимается никаких попыток проверить существование какой-либо части предоставленного пути, рекомендуется отправить сообщение и собрать ответы, чтобы разрешить совпадающий набор акторов.
И в любом случае ActorPath просто создается из строки:
def fromString(s: String): ActorPath
Разобрать строку как путь актера; бросает java.net.MalformedURLException, если не может этого сделать.
Таким образом, нет прямого способа выбрать актера, просто установив определенное значение в config. Однако довольно легко получить значение из конфигурации и использовать его для выбора актера. Учитывая конфиг:
akka {
actor {
selections: {
sampleActor: {
path: "akka.tcp://[email protected]:2553/user/sampleActor"
}
}
}
}
Вы можете использовать:
val sampleActorSelection =
system.actorSelection(
system.settings.config.getString("akka.actor.selections.sampleActor.path"))
Если бы вы часто использовали этот метод, вы могли бы использовать неявный класс, чтобы добавить в систему вспомогательный метод:
implicit class ActorSystemExtension(system: ActorSystem) {
def actorSelectionFromConfig(actorName: String): ActorSelection {
system.actorSelection(
system.settings.config.getString(s"akka.actor.selections.${actorName}.path"))
}
}
person
mattinbits
schedule
15.11.2015