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

HTTP Fetch 1.2.0版本新增了重试策略功能,支持请求异常重试,如超时和连接异常。开发者可通过HttpApi注解配置重试次数及策略,亦可自定义重试策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了方便使用,在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值