В Akka Typed это невозможно с использованием context.ask
, хотя я хотел бы спросить, зачем вам это нужно.
В качестве альтернативы, когда у вас есть два действующих лица, которые взаимодействуют, вы можете определить совместный протокол между ними:
object Hal {
sealed trait Command
sealed trait CommandFromDave extends Command {
def replyTo: ActorRef[Dave.ResponseFromHal]
}
case class OpenThePodBayDoorsPlease(override val replyTo: ActorRef[Dave.ResponseFromHal]) extends CommandFromDave
}
object Dave {
sealed trait Command
sealed trait ResponseFromHal extends Command
case class MessageFromHal(msg: String) extends ResponseFromHal
}
Тогда Dave
может просто
hal ! Hal.CommandFromDave(context.self)
и получить ответ непосредственно от Hal
(и вы можете запланировать сообщение для себя, чтобы учесть время ожидания ).
Обратите внимание, что это действительно запутывает двух актеров вместе. Это подходит для случаев, когда родительский актер откладывает долгосрочную задачу на дочернего актера, но это действительно сомнительный подход в большинстве / всех других сценариях ios.