我目前使用喷涂管道设置REST调用。如果我在x秒内没有得到响应,我希望它超时,但仅限于该特定呼叫。在发出喷涂客户端管道请求时,是否有一种指定特定于该特定调用的超时的好方法?
答案 0 :(得分:1)
据我所知,从喷涂客户端1.3.1开始,无法在创建管道后自定义管道。 但是,您可以为不同类型的请求创建自定义管道。
值得一提的是,下面定义的超时是ask()调用的超时,而不是网络操作的超时,但我想这就是您的描述所需要的。
我发现以下文章非常有助于更好地了解库在幕后工作的方式:http://kamon.io/teamblog/2014/11/02/understanding-spray-client-timeout-settings/
免责声明:我还没有真正试过这个,但我想它应该可行:
val timeout1 = Timeout(5 minutes)
val timeout2 = Timeout(1 minutes)
val pipeline1: HttpRequest => Future[HttpResponse] = sendReceive(implicitly[ActorRefFactory],
implicitly[ExecutionContext], timeout1)
val pipeline2: HttpRequest => Future[HttpResponse] = sendReceive(implicitly[ActorRefFactory],
implicitly[ExecutionContext], timeout2)
然后你明显地为每个请求使用适当的管道