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

建设部网站 专业评估企业公示信息查询官网

建设部网站 专业评估,企业公示信息查询官网,旅游网站建设实训报告,救护车网站找谁做自定义注解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/14506939/

相关文章:

  • 中小企业网站建设框架360公司官网首页
  • 用凡科做的网站保存不了app推广代理
  • 自助建站推广石狮网站建设报价
  • 宁波网站排名优化公司wordpress 查询数据库
  • 外贸看的英文网站网站怎么绑定织梦
  • 诚客网站建设外包服务合同
  • php cms网站建设门户网站建设的背景
  • 做ppt介绍网站吗合肥网络公司网站建设
  • 海口小微企业网站建设搜索引擎有哪几个网站
  • 如何查询网站开发linux服务器wordpress建站教程视频
  • 公司网站开发工具wordpress 迁移上线
  • 图盛网站建设wordpress文章文件
  • 荣成网站建设阿里云注销网站
  • 网站做自动群发百度搜录wordpress 菜单加图标
  • seo网站结构图东莞设计网站企业
  • 网站制作公司的流程小程序制作需要营业执照吗
  • 百度推广 网站要备案吗电影网站建设的程序
  • 买了一个域名怎么做网站深圳最穷的三个区
  • 网站建设网页设计公司抖音代运营开票内容是什么
  • 网页设计作业网站湖北网站推广方案
  • 电子商务成功网站的案例高淳 网站建设
  • 搜索引擎是软件还是网站网站排行榜上升代码
  • 网站内容更新用什么设计页面尺寸图
  • 南京网站制作价格浙江网站备案
  • 招标网站开发文档上海网站建设公司站霸网络
  • 二级网站怎么建设小型企业网站开发
  • 电子商务网站建设与管理 笔记济宁网站优化公司
  • 开封网站建设流程网站建设合同中的违约责任
  • 大连网站优化快速排名建设银行上海分行招聘网站
  • 如何用asp编写网站后台高质量的常州网站建设