HttpClient5中HttpRequestRetryHandler与ServiceUnavailableRetryStrategy替代类及代码改写
一、原 HttpRequestRetryHandler 的替代
原 org.apache.http.client.HttpRequestRetryHandler 在 HttpClient5 中被替换为 org.apache.hc.client5.http.io.HttpRequestRetryStrategy 接口,默认实现类是 org.apache.hc.client5.http.impl.io.DefaultHttpRequestRetryStrategy。
同时,原构建器中的 setRetryHandler() 方法需要改为 setRetryStrategy()。
二、原 ServiceUnavailableRetryStrategy 的替代
原 org.apache.http.client.ServiceUnavailableRetryStrategy 对应 HttpClient5 中的 org.apache.hc.client5.http.ServiceUnavailableRetryStrategy 接口,默认实现类是 org.apache.hc.client5.http.impl.DefaultServiceUnavailableRetryStrategy。
构建器中的方法名 setServiceUnavailableRetryStrategy() 保持不变,但引用的类包路径已更新。
改写后的代码示例
导入语句:
import org.apache.hc.client5.http.io.HttpRequestRetryStrategy; import org.apache.hc.client5.http.ServiceUnavailableRetryStrategy; import org.apache.hc.core5.http.HttpContext; import org.apache.hc.core5.http.HttpResponse; import java.io.IOException;
构建器代码:
.setRetryStrategy(new HttpRequestRetryStrategy() { @Override public boolean retryRequest(IOException exception, int execCount, HttpContext context) { // 原重试逻辑代码 } // 新增方法:需实现重试间隔逻辑 @Override public long getRetryInterval() { // 返回重试间隔(毫秒),示例为1秒 return 1000; } }) .setServiceUnavailableRetryStrategy(new ServiceUnavailableRetryStrategy() { @Override public boolean retryRequest(HttpResponse response, int execCount, HttpContext context) { // 原重试逻辑代码 } // 新增方法:需实现重试间隔逻辑 @Override public long getRetryInterval() { return 1000; } })
注意:HttpClient5 的两个重试策略接口都新增了
getRetryInterval()方法,必须实现该方法指定重试间隔时间。
内容的提问来源于stack exchange,提问作者CodeLearner
相关产品推荐
相关产品推荐

