Я заново учиться Scala, и я хотел бы сделать поток системы следующим образомAkka HTTP + актер + скользкий PostgreSQL
Маршруты (Акка-HTTP), который спрашивает актер Модель (Akka), который затем запрашивает базу данных через модель Slick.
Что-то вроде
Маршрут
path("rooms"){
get {
val rooms = (actorRoom ? GetRooms).mapTo[Seq[Room]] //bad code
complete(rooms) //bad code
}
}
ActorRoom
def receive = {
case GetRooms => sender() ! ModelRoom.getRooms()
Slick Модель
val rooms = TableQuery[RoomTable]
def getRooms(): Future[Seq[Room]] = rooms.result
Моя проблема заключается в том, что я не уверен, когда для решения комнаты.
Должен ли я делать это внутри актера? (завершение маршрута не похоже на ожидание)
Должен ли я сделать это в пределах маршрута? (как мне это сделать?)
Правильно ли этот подход, или актер слишком много?
Извините за задержку. Я получаю эту ошибку: [ERROR] [02/24/2017 15: 21: 05.210] [myapp-akka.actor.default-dispatcher-3] [akka.actor.ActorSystemImpl (myapp)] Ошибка при обработке запроса : 'Vector (Room (Some (1), desigual, 123.4.564.4, false, None)) (класса scala.collection.immutable.Vector)'. Выполняется с ответом 500 Internal Server Error. DbCallThroughActor не разрешает, и сбой на onComplete повышается. – Ruben
регистрирует трассировку ошибки стека. Предоставьте код и трассировку стека. –