我使用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重试请求?
查看文档时,seems to be possible使用AsyncHttpClientConfig
maxNumberOfRedirects
参数(指的是"如果请求失败则重试请求的最大次数#34;)但是如何?
更新:因此,显然,在创建AhcWSClient
时,我们会获得five retries by default,并且可以使用不同的AhcWSClientConfig
指定我们自己的maxRequestRetry
。但是当我发出返回502状态代码的请求时,我看不到发生多次尝试......我应该将其视为"失败的请求"?
答案 0 :(得分:-1)
通常客户端应该只重试idempotent的方法:
方法GET,HEAD,PUT和DELETE共享此属性。此外,方法OPTIONS和TRACE不应该有副作用,因此本质上是幂等的。