您的位置:首页 > 理论基础 > 计算机网络

httpfetch http重试策略-一款java语言编写优雅的http接口调用组件

2018-02-23 23:51 423 查看
为了方便使用,在1.2.0版本中增加了重试策略。默认的重试策略为请求异常重试,包括请求超时和连接异常。

1.QuickStart;
    a) 首先需要升级版本为1.2.0;<dependency>
<groupId>com.github.youzan</groupId>
<artifactId>http-fetch</artifactId>
<version>1.2.0</version>
</dependency>    b) HttpApi注解中增加了retry和retryPolicy两个变量;
        retry:重试次数;
        retryPolicy:重试策略,默认为ConnectFailureRetryPolicy,超时和连接异常会进行重试;

2.自定义重试策略;
类图:



所有的重试策略需要继承RetryPolicy接口,并实现needRetry函数。/**
* 重试校验接口
*/
public interface RetryPolicy {

/**
*
* @param result http请求结果
* @param retryTimes 重试次数
* @param remainRetryTimes 剩余重试次数
* @return
*/
boolean needRetry(HttpResult result, int retryTimes, int remainRetryTimes);

}ConnectFailureRetryPolicy:public class ConnectFailureRetryPolicy implements RetryPolicy {

private static final Logger LOGGER = LoggerFactory.getLogger(ConnectFailureRetryPolicy.class);

/**
* 如果是网络异常则重试
* @param result http请求结果
* @param retryTimes 重试次数
* @param remainRetryTimes 剩余重试次数
* @return
*/
@Override
public boolean needRetry(HttpResult result, int retryTimes, int remainRetryTimes) {
Exception e = result.getException();
if(e instanceof SocketTimeoutException || e instanceof ConnectException){
LOGGER.info("超时重试: {}, 重试次数: {} 剩余次数: {}", e, retryTimes, remainRetryTimes);
return true;
}
return false;
}

}实现完自己的重试策略后,只需要在HttpApi注解中设置retryPolicy的值就可以了。

希望可以多多提议,也希望可以帮助到大家: https://github.com/youzan/httpfetch
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: