В настоящее время я пытаюсь переписать существующего нетипизированного актера в типизированный. Поскольку субъект взаимодействует с базой данных MySQL с использованием ScalikeJDBC, и поскольку я хотел бы сделать это асинхронно, я имею дело с Futures, выходящими из отдельного (неактивного) класса репозитория.
С нетипизированным Akka, в методе получения актера, я мог бы сделать это:
import akka.pattern.pipe
val horseList : Future[Seq[Horse]] = horseRepository.listHorses(...)
horseList pipeTo sender()
И актер-отправитель получит список лошадей. Я не могу понять, как сделать это внутри поведения, как:
val behaviour : Behavior[ListHorses] = Behaviors.receive {
(ctx,msg) => msg match {
case ListHorses(replyTo) =>
val horseListF : Future[Seq[Horse]] = horseRepository.listHorses(...)
// -> how do I make horseListF's content end up at replyTo? <-
Behaviors.same
}
}
Паттерн канала не работает (так как он ожидает нетипизированный ActorRef), и до сих пор я не нашел ничего другого в зависимости akka-actor-typed
(2.5.12), которую я использую для этой работы.
Как мне это сделать?