Скажем, у меня есть сущность, которая содержит ссылку на свой дочерний актер в качестве одного из своих полей.Я хотел бы иметь возможность передать эту дочернюю ссылку отправителю, который его запрашивал:
class SomeActor extends FSM[State, Data] {
when(Idle) {
case Event(GetChild, _) =>
val child = context.actorOf(Props[ChildActor])
sender() ! child
stay.using(/*save state here*/)
Запрос на ссылку направляется в область шарда:
val getChildFuture = someRegion ? Message(id, GetChild)
val child: ActorRef = Await.result(getChildFuture, timeout.duration).asInstanceOf[ActorRef]
// do something with the actor ref here
КогдаЯ попробовал это, я получил бы сообщение о том, что сообщение / ответ от дочернего актера не было доставлено до мертвых букв.
Причина, по которой я хотел получить ссылку на ребенка, заключалась в том, что я хотел превратить его вприемник (т. е. отправить поток в него), и я не хотел продолжать посылать байты в область шарда и пересылать их в сущность SomeActor
(у меня сложилось впечатление, что это дорого, и выможете поправить меня)
Я даже правильно все делаю?Я также открыт для альтернативных подходов.