Java开发

@Retryable 异常重试注解

2022-10-24  本文已影响0人  _浅墨_
  /***
     * 发送闪信
     * 发送失败重试10次,间隔3,6,12,24,48,96,192,384,768,1536秒之后
     * 如果BackOff时间设置比较长,最好起异步线程重试(也可以加@Async注解)。
     * @return java.lang.String
     * value: 指定重试的异常,只有该异常才会重试,如果有多个异常重试,支持:value={RetryException.class,RunTimeException.class}
     * maxAttempts: 重试次数,默认为3次
     * @Backoff 标签
     * delay:延迟时间(单位毫秒,默认为0毫秒)
     * multiplier: 延迟间隔倍率,比如定义延迟为1秒,延迟倍率为2,则第一次重试间隔为1秒,第二次2秒,第三次4秒
     * maxDelay: 最大间隔时间,最大延迟的时间,不设置默认为30秒钟。
     **/
    @Async
    @Retryable(value = RetryException.class, maxAttemptsExpression = "${mufeng-api.retry.maxAttempts:10}", backoff = @Backoff(delay = 3000L, maxDelay=1600000,multiplier = 2))

public void addRemarkToRedmine(String redmineKey,Integer redmineId,String remark){

        log.info("async add remark to redmine: apiKey= {} redmineId= {} remark= {}",redmineKey,redmineId,remark);
        if (StringUtils.isEmpty(redmineKey) || redmineId ==null){
            return;
        }
        try {
            log.info("当前线程id= {} name= {}",Thread.currentThread().getId(),Thread.currentThread().getName());
            redmineCommonFunction.addRemark(redmineKey, redmineId, remark);
        } catch (RedmineException e) {
            log.error("redmineCommonFunction.addRemark error: ",e);
            throw new RetryException("上传文件备注redmine失败...");
        }
    }

记得方法中 一定要抛出异常,注解才生效。

throw new RetryException("上传文件备注redmine失败...");
上一篇 下一篇

猜你喜欢

热点阅读