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

建设部网站 专业评估东莞市手机网站建设

建设部网站 专业评估,东莞市手机网站建设,超全wordpress,wordpress前台主题切换自定义注解FeignRetry为了解决上面提到的问题#xff0c;让Feign调用的每个接口单独配置不同的重试机制。我们使用了面向切面编程并编写了一个自定义注解#xff1a;FeignRetry。此注释的工作方式类似于Retryable的包装器#xff0c;并与其共享相同的规范以避免混淆。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) {MapClass? 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)) ResponseEntityString retrieve1();GetMapping FeignRetry(maxAttempt 6, backoff Backoff(delay 500L, maxDelay 20000L, multiplier 4)) ResponseEntityString retrieve2();另外还需要在应用程序类中使用 EnableRetry 注释来启动重试直接写在SpringBoot的启动类上。这里再讲解一下各个参数的含义include就是value默认为空当exclude也为空时默认所有异常都可以触发重试exclude指定那些异常不触发重试(可以配置多个异常类型)默认为空maxAttempts最大重试次数默认3次包括第一次调用backoff重试等待策略 默认使用Backoff注解BackOff各个参数的讲解value: 重试的间隔时间默认为1000L我们设置为2000Ldelay重试的间隔时间,就是valuemaxDelay重试次数之间的最大时间间隔默认为0如果小于delay的设置则默认为30000Lmultiplierdelay时间的间隔倍数默认为0表示固定暂停1秒后进行重试如果把multiplier设置为1.5则第一次重试为2秒第二次为3秒第三次为4.5秒。
http://www.hkea.cn/news/14523704/

相关文章:

  • 百度做网站骗人到哪里去投诉网站开发用了哪些知识要点
  • 如何做能切换语言的网站郑州网站推广单位
  • 个人网站需要备案吗燕郊教育网站建设
  • 网站备案是域名备案还是主机备案wordpress博客导航
  • 网站默认首页怎么做视频网站界面设计
  • 网站的整体规划怎么写广告文案优秀网站
  • 网站收录查询代码制作网站的软件有哪些
  • 健身房网站的建设情况中国房地产app下载安装最新版
  • 绥化网站建设公司wordpress正文页面
  • 沂水网站设计11个免费网站空间
  • 2345电影新网站模板甘肃住房和城乡建设局网站
  • 静态网站 服务器做母婴网站设计思路
  • 建设上海公司网站网站网页制作企业
  • 上海知名网站建信用门户网站建设专家评价
  • 开办网站备案一级做a免费体验区不用下载网站
  • 建设网站费用记入什么科目合伙建网站
  • 做物流网站计划别墅装修设计公司哪家好
  • 小学网站建设教程网页设计培训图片
  • 2002年做网站多少钱修改自豪地采用wordpress
  • 怎样搭建网站企业组网方案
  • seo按天计费软件赣州seo排名
  • 西安网站建设培训班网站兼容手机浏览器
  • 东莞专业网站设计建站公司WordPress如何添加cnzz
  • 网络设计网站动态域名可以建网站
  • 濮阳自适应网站建设洛阳又发现一例
  • 秦淮做网站价格都匀网站开发的公司
  • 什么网站的易用性做中介最好用的网站
  • 成品网站灬1688设计师网址导航网
  • 手机网站预约表单北京市建设工程质量监督网站
  • html5个人网站源码wordpress主题制作器