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
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
相关文章推荐
- httpfetch-一款java语言编写优雅的http接口调用组件
- httpfetch 快速使用-一款java语言编写优雅的http接口调用组件
- delphi调用java编写的http接口
- delphi调用java编写的http接口
- java HttpClient get post请求 调用接口
- 记一个java和php都能调用的http接口
- android 调用java编写接口 简单示例
- 各种开发语言示例调用HTTP接口(示例中默认HTTP接口编码为gb2312)
- 身份证识别接口编写的JAVA调用示例
- java 使用URLConnection 进行HTTP接口调用
- JAVA 调用HTTP接口POST或GET实现方式
- java调用http接口
- ICTCLAS分词系统Java调用接口在Eclipse中的安装 http://blog.csdn.net/CloneIQ/archive/2006/07/20/945909.aspx
- JAVA发送http get/post请求,调用http接口、方法
- JAVA发送http get/post请求,调用http接口、方法
- JAVA通过http调用验证码短信接口源码
- java 编写webservice 接口(xfire) ,调用webservice接口
- JAVA使用httpUrlConnection 调用http接口
- 证件识别接口编写的JAVA调用示例
- java HttpUrlConnection get和post 模拟请求 调用接口