当前位置: 首页 > news >正文

网站建设前期准备方案北海seo快速排名

网站建设前期准备方案,北海seo快速排名,如何用模板建网站,日本创意小产品设计自定义注解FeignRetry为了解决上面提到的问题,让Feign调用的每个接口单独配置不同的重试机制。我们使用了面向切面编程并编写了一个自定义注解:FeignRetry。此注释的工作方式类似于Retryable的包装器,并与其共享相同的规范以避免混淆。Target…

自定义注解@FeignRetry

为了解决上面提到的问题,让Feign调用的每个接口单独配置不同的重试机制。我们使用了面向切面编程并编写了一个自定义注解:@FeignRetry。此注释的工作方式类似于@Retryable的包装器,并与其共享相同的规范以避免混淆。

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface FeignRetry {Backoff backoff() default @Backoff();int maxAttempt() default 3;Class<? extends Throwable>[] include() default {};
}@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Backoff {long delay() default 1000L;;long maxDelay() default 0L;double multiplier() default 0.0D;;
}

FeignRetryAspect切面处理@FeignRetry注解。

 Slf4j
@Aspect
@Component
public class FeignRetryAspect {@Around("@annotation(FeignRetry)")public Object retry(ProceedingJoinPoint joinPoint) throws Throwable {Method method = getCurrentMethod(joinPoint);FeignRetry feignRetry = method.getAnnotation(FeignRetry.class);RetryTemplate retryTemplate = new RetryTemplate();retryTemplate.setBackOffPolicy(prepareBackOffPolicy(feignRetry));retryTemplate.setRetryPolicy(prepareSimpleRetryPolicy(feignRetry));// 重试,注意这里execute还有第二个参数,可以设置重试全部失败以后的回调函数,再重试任然失败以后,可以编写回调函数来兜底return retryTemplate.execute(arg0 -> {int retryCount = arg0.getRetryCount();log.info("Sending request method: {}, max attempt: {}, delay: {}, retryCount: {}",method.getName(),feignRetry.maxAttempt(),feignRetry.backoff().delay(),retryCount);return joinPoint.proceed(joinPoint.getArgs());});}private BackOffPolicy prepareBackOffPolicy(FeignRetry feignRetry) {if (feignRetry.backoff().multiplier() != 0) {ExponentialBackOffPolicy backOffPolicy = new ExponentialBackOffPolicy();backOffPolicy.setInitialInterval(feignRetry.backoff().delay());backOffPolicy.setMaxInterval(feignRetry.backoff().maxDelay());backOffPolicy.setMultiplier(feignRetry.backoff().multiplier());return backOffPolicy;} else {FixedBackOffPolicy fixedBackOffPolicy = new FixedBackOffPolicy();fixedBackOffPolicy.setBackOffPeriod(feignRetry.backoff().delay());return fixedBackOffPolicy;}}private SimpleRetryPolicy prepareSimpleRetryPolicy(FeignRetry feignRetry) {Map<Class<? extends Throwable>, Boolean> policyMap = new HashMap<>();policyMap.put(RetryableException.class, true);  // Connection refused or time outpolicyMap.put(ClientException.class, true);     // Load balance does not available (cause of RunTimeException)if (feignRetry.include().length != 0) {for (Class<? extends Throwable> t : feignRetry.include()) {policyMap.put(t, true);}}return new SimpleRetryPolicy(feignRetry.maxAttempt(), policyMap, true);}private Method getCurrentMethod(JoinPoint joinPoint) {MethodSignature signature = (MethodSignature) joinPoint.getSignature();return signature.getMethod();}
}

捕获FeignRetry注解的方法,将配置传递给Spring RetryTemplate,根据配置调用服务。

@FeignRetry 的使用

用法很简单,只需将注释放在我们希望重试机制处于活动状态的 Feign Client方法上即可。自定义切面的用法类似于Spring自带的@Retryable注解。

@GetMapping
@FeignRetry(maxAttempt = 3, backoff = @Backoff(delay = 500L))
ResponseEntity<String> retrieve1();@GetMapping
@FeignRetry(maxAttempt = 6, backoff = @Backoff(delay = 500L, maxDelay = 20000L, multiplier = 4))
ResponseEntity<String> retrieve2();

另外还需要在应用程序类中使用 @EnableRetry 注释来启动重试,直接写在SpringBoot的启动类上。

这里再讲解一下,各个参数的含义

include:就是value,默认为空,当exclude也为空时,默认所有异常都可以触发重试
exclude:指定那些异常不触发重试(可以配置多个异常类型),默认为空
maxAttempts:最大重试次数,默认3次(包括第一次调用)
backoff:重试等待策略 默认使用@Backoff注解

@BackOff各个参数的讲解
value: 重试的间隔时间默认为1000L,我们设置为2000L
delay:重试的间隔时间,就是value
maxDelay:重试次数之间的最大时间间隔,默认为0,如果小于delay的设置,则默认为30000L
multiplier:delay时间的间隔倍数,默认为0,表示固定暂停1秒后进行重试,如果把multiplier设置为1.5,则第一次重试为2秒,第二次为3秒,第三次为4.5秒。

http://www.dinnco.com/news/68365.html

相关文章:

  • 北京移动端网站今日财经最新消息
  • 延边网站开发depawo最近一周新闻大事摘抄2022年
  • 温州网站 公司软文推广去哪个平台好
  • 济宁软件开发网站建设网站批量查询
  • wordpress 站内资讯口碑营销成功案例
  • 桌子上做嗯啊干爹网站北京网站优化合作
  • 深圳网站制作07551760关键词排名查询
  • wordpress 国内视频网站石家庄关键词优化平台
  • 做照片书的网站好百度指数移动版
  • 网站上线稳定后工作网站推广的渠道有
  • 新网站怎么做谷歌推广呢站长工具5g
  • 一个人做两个博客网站线上推广100种方式
  • 空间租用网站模板怎么推广游戏代理赚钱
  • 网站建设维护培训seo网站推广是什么
  • 今天的西安今日头条seo外包公司需要什么
  • 如何办理浙江省网站备案密码重置和备案注销搜索引擎优化名词解释
  • 网站备案幕布申请海南网站制作公司
  • 阿里云服务器做网站多少钱seo推广是什么意思呢
  • 北京网站设计与制作公司在线葡京在线葡京
  • 美国室内设计网站大全百度优化教程
  • 电脑版网页灵宝seo公司
  • 山西建设网站百度惠生活推广怎么收费
  • 建美食网站有哪些原因做小程序公司哪家好
  • 我有网网站建设青岛百度网站排名优化
  • 17一起来做网站成都seo外包
  • 网站做的一样侵权吗青岛百度推广优化
  • 杭州网站建设培训班seo基础视频教程
  • 金融网站怎么做网站优化服务
  • 怎么做日本钓鱼网站吗永久免费自动建站
  • 给博彩网站做优化搜索引擎seo如何赚钱