Спрей HttpClient Синхронный/Блокирующий вызов

Я понимаю, что это может противоречить цели Spray, но мне было интересно, могу ли я при использовании объекта HttpClient блокировать запрос до тех пор, пока не будет возвращен результат, в отличие от поведения по умолчанию, когда не блокируется, а затем выдается перезвонить.

Я бегло заглянул в исходный код HttpClient, думая, что это актер akka, обернутый вокруг синхронного частного суперкласса HTTP-клиента, но, похоже, это не так.


person Dan Collins    schedule 06.06.2013    source источник


Ответы (1)


Разве HTTP-клиент спрея не возвращает scala Future? Если это так, то вы должны просто сделать:

import scala.concurrent._
import duration._

val fut = ... //call spray here
val result = Await.result(fut, 5 seconds)

Это заблокирует будущее на срок до 5 секунд, ожидая его завершения. Если время истекло, вместо получения результата будет сгенерировано исключение.

person cmbaxter    schedule 06.06.2013