之前写了一篇介绍 HttpClient 的两种重试机制 的文章, 但是否真的会按照预期进行重试我们不得而知。
别人提供给我们的 API 往往都是正常的,很多错误并不能稳定重现,这也造成了我们无法进行全面的测试。正是这种情况下,了解到了 WireMock。
本文不打算做一个入门教程,重点在于如何用 WireMock 解决实际的问题。WireMock 官网的文档很不错,想要深入了解的可以去阅读一下。
初始化调用端
首先初始化一个HttpClient
public ZwroksApi(){
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(1000).build();
DefaultServiceUnavailableRetryStrategy serviceUnavailableRetryStrategy = new DefaultServiceUnavailableRetryStrategy();
httpClient = HttpClients.custom()
.setServiceUnavailableRetryStrategy(serviceUnavailableRetryStrategy)
.setDefaultRequestConfig(requestConfig)
.build();
}
进行了如下配置
- 异常重试默认开启,重试3次。
- 使用了默认的服务不可用重试策略,会重试1次,间隔1秒。
- 设置 SocketTimeout 为1秒,用于模拟超时。