我使用Play的AhcWSClient来发出HTTP请求(我不使用Play框架的其余部分):
implicit val system = ActorSystem()
implicit val materializer = ActorMaterializer()
val wsClient = AhcWSClient()
wsClient
.url(s"http://somerandomurl.com/somethingsomething")
.get()
.map { wsResponse =>
if (!(200 to 299).contains(wsResponse.status)) {
sys.error(s"Received unexpected status ${wsResponse.status} : ${wsResponse.body}")
}
println(s"OK, received ${wsResponse.body}")
}(system.dispatcher)
},如果请求失败,如何指示WSClient重试请求?
查看这些文档,使用一个似乎是可能的参数(它指“如果请求失败时重试请求的最大次数”)来使用AsyncHttpClientConfig,但如何使用?
更新:因此,显然,在创建AhcWSClient时,我们会得到默认情况下五次重试,并且可以用不同的maxRequestRetry指定自己的AhcWSClientConfig。但是当我发出返回502状态码的请求时,我看不到多次尝试.我应该把什么算作“失败的请求”?
发布于 2017-02-08 10:29:03
通常,客户端应该只重试属于幂等的方法:
方法GET、HEAD、PUT和DELETE共享此属性。此外,方法选项和跟踪不应该有副作用,因此本质上是幂等的。
https://stackoverflow.com/questions/37011458
复制相似问题