2016-12-03 5 views
0

Я переношу приложение из Spray в Akka HTTP. В конфигурации у меня есть:Spray to Akka HTTP migration: spray.can.client.request-timeout

spray { 
    can { 
    client.request-timeout = infinite 
    } 
} 

Что такое эквивалентная конфигурация для Akka HTTP? Похоже, что request-timeout теперь доступен только на server, а не client.

https://github.com/akka/akka-http/blob/master/akka-http-core/src/main/resources/reference.conf См

ответ

1

От Akka-HTTP документы (http://doc.akka.io/docs/akka-http/current/scala/http/client-side/connection-level.html#timeouts)

В настоящее время Акка HTTP не реализует на стороне клиента тайм-аут запроса проверки себя в качестве этой функции можно рассматривать как более целом .

Следует отметить, что Akka потоки обеспечивают различную функциональные возможности тайма-аут так что любой API, который использует потоки могут извлечь выгоду из потока этапов, такие как idleTimeout, backpressureTimeout, completionTimeout, initialTimeout и дроссельная заслонка. Чтобы узнать больше об этом, обратитесь к их документации в потоках Akka (и Scala Doc).

По существу, пользователю остается добавить контроль тайм-аута в поток своей клиентской стороны. Например, в примере, показанном на the docs можно добавить completionTimeout этап для достижения этой

val responseFuture: Future[HttpResponse] = 
    Source.single(HttpRequest(uri = "/")) 
     .via(connectionFlow) 
     .completionTimeout(5.seconds) 
     .runWith(Sink.head) 

И обратите внимание, что если вы после infinite тайма-аута (в соответствии с вашим Spray конфигурации), которые придут бесплатно, не добавляя любой тайм-аут.

0
akka.http { 
    server { 
    idle-timeout = infinite 
    } 
    client { 
    idle-timeout = infinite 
    } 

    host-connection-pool { 
    idle-timeout = infinite 
    } 

} 

Вы можете выбрать раздел клиента.