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

企业邮箱 网站建设qq建设网站首页

企业邮箱 网站建设,qq建设网站首页,大型网站开发经典框架,wordpress上传文件夹文章目录 前言Spring Retry的基本使用第一步#xff0c;引入Spring Retry的jar包第二步#xff0c;构建一个RetryTemplate类第三步#xff0c;使用RETRY_TEMPLATE注意事项 拓展方法降级操作重试策略#xff1a;时间策略重试策略#xff1a;指定异常策略 前言 Spring Retr… 文章目录 前言Spring Retry的基本使用第一步引入Spring Retry的jar包第二步构建一个RetryTemplate类第三步使用RETRY_TEMPLATE注意事项 拓展方法降级操作重试策略时间策略重试策略指定异常策略 前言 Spring Retry 是 Spring Framework 中的一个模块提供了一种简单的方式来在应用程序中实现重试机制。 在应用程序中如果遇到了一些不可避免的错误比如网络连接失败、数据库连接失败等我们通常需要对这些错误进行重试以尝试解决这些问题。Spring Retry 提供了一个可插拔的、面向切面的重试框架可以让我们很容易地在应用程序中实现重试机制。 Spring Retry 中最常用的类是 RetryTemplate它提供了一个 execute 方法可以让我们在方法调用失败时进行重试。RetryTemplate 中可以设置最大重试次数、重试间隔时间等参数。此外还可以设置重试条件如重试的异常类型、重试策略等。 今天我们来讲一下Spring Retry Spring Retry的基本使用 第一步引入Spring Retry的jar包 dependencygroupIdorg.springframework.retry/groupIdartifactIdspring-retry/artifactIdversion1.3.1/version /dependency第二步构建一个RetryTemplate类 这段代码展示了如何使用Spring Retry库创建一个RetryTemplate实例来进行重试操作。该实例最多进行3次尝试每次重试的时间间隔会指数级增长最大可达10分钟重试只会在ArithmeticException异常发生时进行。 private static final RetryTemplate RETRY_TEMPLATE RetryTemplate.builder().maxAttempts(3).exponentialBackoff(5000, 3, 600000L).retryOn(ArithmeticException.class).build();第三步使用RETRY_TEMPLATE Boolean test2 RETRY_TEMPLATE.execute((RetryCallbackBoolean, ArithmeticException) context - {System.out.println(test context.getRetryCount());int i 1 / 0;System.out.println(test2);return Boolean.FALSE;});System.out.println(test2);使用 RETRY_TEMPLATE.execute 方法执行一个 RetryCallback里面放置需要重试的逻辑代码。这段示例代码中在逻辑代码中将会抛出 ArithmeticException 异常然后框架会自动尝试重试最终返回 Boolean.FALSE。 这里的运行结果为 在这个具体的例子中返回true或者false的区别在于当RetryTemplate达到最大重试次数时如果RetryCallback的执行结果为true则RetryTemplate会认为重试成功并结束重试 如果RetryCallback的执行结果为false则RetryTemplate会认为重试失败并抛出RetryException异常。 总的来说true表示成功false表示失败。但是需要根据具体的场景和语义来确定具体的含义。在这个例子中返回true表示重试成功返回false表示重试失败。即test2的值。 注意事项 需要注意的是context.getRetryCount()的值是从0开始的如果maxAttempts设置为3的话那就最大值为3-12 所以我们可以根据该方法进行业务的判断 值得注意的是retryOn()只会重试指定类型的错误以及其子类并且当抛出的错误类型为非运行是异常的情况需要在方法上面抛出 另外我们可以捕获对应的异常并且在catch中抛出且可以进行业务的控制 拓展方法 RetryTemplate是Spring Retry提供的核心类可以用来进行方法调用的重试操作。除了上面提到的execute()方法RetryTemplate还提供了其他一些常用的方法和配置选项下面介绍一些常见的用法 降级操作 execute(RetryCallbackT, E retryCallback, RecoveryCallback recoveryCallback)除了可以传入一个RetryCallback接口执行需要重试的方法调用外还可以传入一个RecoveryCallback接口用于在重试次数达到上限后执行降级操作。RecoveryCallback接口提供一个recover(RetryContext context)方法可以在该方法中实现降级逻辑。例如 RetryTemplate retryTemplate RetryTemplate.builder().maxAttempts(3).build();retryTemplate.execute((RetryCallbackVoid, RuntimeException) context - {// 需要重试的方法调用someService.someMethod();return null; }, (RecoveryCallbackVoid) context - {// 重试次数达到上限后执行降级操作fallbackService.fallbackMethod();return null; });重试策略时间策略 setBackOffPolicy(BackOffPolicy backOffPolicy)设置重试策略即在每次重试之间的等待时间策略。BackOffPolicy接口提供了多个实现类例如ExponentialBackOffPolicy、FixedBackOffPolicy等。例如 ExponentialBackOffPolicy backOffPolicy new ExponentialBackOffPolicy(); backOffPolicy.setInitialInterval(1000); // 初始等待时间1000ms backOffPolicy.setMultiplier(2.0); // 每次重试等待时间乘以2 backOffPolicy.setMaxInterval(60000); // 最大等待时间60000msRetryTemplate retryTemplate RetryTemplate.builder().maxAttempts(3).backOffPolicy(backOffPolicy).build();retryTemplate.execute((RetryCallbackVoid, RuntimeException) context - {// 需要重试的方法调用someService.someMethod();return null; });重试策略指定异常策略 setRetryPolicy(RetryPolicy retryPolicy)设置重试策略即在哪些异常情况下进行重试。RetryPolicy接口提供了多个实现类例如SimpleRetryPolicy、TimeoutRetryPolicy、CompositeRetryPolicy等。例如 SimpleRetryPolicy retryPolicy new SimpleRetryPolicy(); retryPolicy.setMaxAttempts(3); // 最大重试次数RetryTemplate retryTemplate RetryTemplate.builder().retryPolicy(retryPolicy).build();retryTemplate.execute((RetryCallbackVoid, RuntimeException) context - {// 需要重试的方法调用someService.someMethod();return null; });RetryPolicy和RetryOn都是Spring Retry中的重试机制但它们的作用略有不同。 RetryPolicy用于定义重试策略即在发生异常时应该如何重试它包括重试的次数、重试的间隔时间、是否需要使用指数退避等信息。在RetryTemplate中我们可以使用RetryPolicy来创建一个重试模板。 RetryOn用于定义哪些异常会触发重试即重试的条件。在RetryTemplate中我们可以使用RetryOn来指定需要重试的异常类型。通常我们使用RetryOn来定义需要重试的异常类型并使用RetryPolicy来定义重试策略。 总体来说RetryOn和RetryPolicy是配合使用的RetryOn指定需要重试的异常类型RetryPolicy定义重试策略。这样当指定的异常类型发生时RetryTemplate就会根据定义的重试策略进行重试。 Spring Retry为我们提供了丰富的配置选项允许我们根据具体需求定制重试策略和回退逻辑。无论是简单的定时重试还是根据异常类型进行有条件的重试Spring Retry都能灵活满足我们的各种需求。 在使用Spring Retry时建议根据实际场景仔细选择重试策略合理设置最大重试次数和重试间隔以免对系统和依赖造成不必要的压力。同时对于一些不可恢复的错误我们也应该考虑合理的异常处理策略避免陷入无限重试的死循环。 总的来说Spring Retry是一个强大且易于使用的工具可以帮助我们有效应对应用程序中的不稳定性。
http://www.yutouwan.com/news/418988/

相关文章:

  • 注册域名网站wordpress制作小工具
  • 高端网站建设必去磐石网络平面设计网站大全有哪些
  • 外贸网站建设是什么意思做有声小说网站
  • 北京网站开发哪家专业网站推广计划包含的主要内容
  • 宣传册设计与制作模板免费seo1视频发布会
  • 怎么注册网站域名唐山网站制作价格
  • 网站运营做产品需要哪些知识discuz做电影网站
  • 如何在jsp上做网站页面公司怎么做网站平台
  • 新郑市网站建设电子商务网站建设实训报告
  • 网站 流量攻击设计公司网站模板
  • 做网站要钱吗深圳购物网站建设
  • 求推荐好的网站建设平台潜江做网站的
  • 厦门网站建设那家好搜索引擎优化工具深圳
  • html5网站抓取高州女网红遇害案犯罪嫌疑人被抓获
  • 长春网站建设致电吉网传媒优公众号如何推广宣传
  • 自行建造网站做图片能去哪些网站
  • wordpress oday惠州seo博客报价
  • 做毕业证教育网站网站建设公司文案
  • 做网站用到的单词广告策划书前言范文
  • 东阳营销型网站建设品牌鱼爪网商城网站如何建设
  • 商城网站怎么做推广中国互联网站建设中心建站
  • 普宁17网站一起做网店衡水做网站技术
  • 网站初期内容挂机宝做网站可以吗
  • 推广网站优化seo教程上排名做网站要icp备案吗
  • 邯郸做网站找哪家好中国现在哪里建设最多
  • 高端建设网站公司哪家好WordPress会员月卡年卡
  • 河南网站建设平台小网站代码
  • 中国设计网站排行榜前十名优化seo
  • 网站80端口备案网站建设图片代码
  • 公司建网站一般多少钱郑州网站推广外包