Akka - Как получить ссылку на дочерний субъект сущности в области шарда? - PullRequest
1 голос
/ 30 мая 2019

Скажем, у меня есть сущность, которая содержит ссылку на свой дочерний актер в качестве одного из своих полей.Я хотел бы иметь возможность передать эту дочернюю ссылку отправителю, который его запрашивал:

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 (у меня сложилось впечатление, что это дорого, и выможете поправить меня)

Я даже правильно все делаю?Я также открыт для альтернативных подходов.

...