Как "спросить" актерский отбор
Как мне спросить актера, который должен быть предоставлен по его пути?
ask(context.actorSelection("../foo"), GetInfoMessage)
... приводит к ActorSelection
, но может быть задано только ActorRef
.
Альтернативно, context.actorFor
возвращает ActorRef
, но эта функция устарела в соответствии с документацией.
Ответы
Ответ 1
Позже на этой странице вы увидите
Чтобы приобрести ActorRef, привязанный к жизненному циклу конкретного актера, вам нужно отправить сообщение, например, встроенное сообщение Identify, актеру и использовать ссылку отправителя ответа от актера.
Итак, это трехэтапный процесс. Используйте actorSelection
, затем отправьте Identify
, затем ask
.
Это только для Akka 2.2, хотя в Akka 2.1 или ранее вам все равно нужно использовать actorFor
.
Обоснование объясняется в Руководстве по миграции 2.2.
Ответ 2
Так как Akka 2.2.1 вы можете использовать ActorSelection.resolveOne
, чтобы получить ActorRef
из выделения:
http://doc.akka.io/api/akka/2.2.1/index.html#akka.actor.ActorSelection
Затем вы можете спросить ActorRef, как обычно,