java重试


重试

重试,就是多试几次。一次不成功,多试几次说不定就成功了。

什么时候重试?

要执行的逻辑比较重要,或者是服务不稳定,或者是Rpc远程调服务有时不成功,都可以使用重试。

示例代码

public class RetryTest {
    private static final Logger log = Logger.getLogger(RetryTest.class);

    public static void main(String[] args) throws InterruptedException {
        retryDoSomething();
    }

    public static void retryDoSomething() throws InterruptedException {
        log.info("retryDoSomething start.");
        //重试次数
        int maxTimes = 5;
        //每次重试间隔时间
        int interval = 500;

        for (int i = 0; i <= maxTimes; i++) {
            boolean isOk = doSomething();
            //成功了就停止
            if (isOk ) {
                break;
            }
            Thread.sleep(interval);
        }
        log.info("retryDoSomething end.");
    }


    /**
     * 执行逻辑,成功就返回 true,报错返回 false
     *
     * @return
     */
    public static boolean doSomething() {
        try {
            //执行逻辑
            doSth();
        } catch (Exception e) {
            log.error("service.doSomething() error.", e);
            return false;
        }
        return true;
    }

    /**
     * 执行逻辑的方法
     *
     * 以下是示例,可以将示例替换成自己的逻辑
     *
     */
    public static void doSth() {
        Random random = new Random();
        //随机产生一个[0-100]之间的随机数,由于是随机,每次执行的结果可能不一样
        int num = random.nextInt(101);
        if (num % 5 ==0) {
            //如果是5的倍数就不报错
            log.info("doSth num:"+ num);
        } else {
            //模拟失败,抛异常
            throw new NumberFormatException();
        }

    }
}

原创文章,作者:,如若转载,请注明出处:https://blog.ytso.com/274634.html

(0)
上一篇 2022年7月15日
下一篇 2022年7月15日

相关推荐

发表回复

登录后才能评论