我正在使用 ApacheHttpClient
和Failsafe java 库。下面是(伪)代码的样子:
RetryPolicy<CloseableHttpResponse> policy = new RetryPolicy<>()
.handleResultIf(/* Response code is 404 */)
.withMaxRetries(5)
.withDelay(Duration.ofSeconds(10));
CloseableHttpResponse response = Failsafe.with(policy).get(() -> httpClient.execute(myRequest));
它正在调用一个测试端点,localhost
我已经模拟了它来执行以下操作:
- 前 3 个请求返回 404
- 第 4 个请求返回 200
现在,当我执行上面的代码时,我看到了以下行为:
- HttpClient发送
get
请求,结果为404 - 作为响应
404
,重试策略启动并重试请求 - 重试请求失败,
400
没有实际到达代理 - 所有随后的重试都失败了
400
。响应没有任何正文
我希望第 2 步中的请求能够命中我的模拟,但是,它没有命中就失败了。是否HttpClient
缓存响应或尝试阻止后续重试?