Я пытаюсь использовать Akka HTTP для базового аутентификации моего запроса. Так получилось, что у меня есть внешний ресурс для аутентификации, поэтому я должен сделать отдых для этого ресурса.
Это занимает некоторое время, и пока он обрабатывается, кажется, что остальная часть моего API заблокирована, ожидая этого вызова. Я воспроизвел это с помощью очень простого примера:
// used dispatcher:
implicit val system = ActorSystem()
implicit val executor = system.dispatcher
implicit val materializer = ActorMaterializer()
val routes =
(post & entity(as[String])) { e =>
complete {
Future{
Thread.sleep(5000)
e
}
}
} ~
(get & path(Segment)) { r =>
complete {
"get"
}
}
Если я отправлю сообщение в конечную точку журнала, моя конечная точка доступа также застряла в ожидании 5 секунд, которые продиктовала конечная точка журнала.
Является ли это ожидаемым поведением, а если есть, как мне сделать блокирующие операции без блокировки всего моего API?