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

山西省住房和城乡建设厅网站报名杭州seo托管公司推荐

山西省住房和城乡建设厅网站报名,杭州seo托管公司推荐,做网站需要注意哪些,唐山网站托管文章目录 前言Spring Retry的基本使用第一步,引入Spring Retry的jar包第二步,构建一个RetryTemplate类第三步,使用RETRY_TEMPLATE注意事项 拓展方法降级操作重试策略:时间策略重试策略:指定异常策略 前言 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包

<dependency><groupId>org.springframework.retry</groupId><artifactId>spring-retry</artifactId><version>1.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((RetryCallback<Boolean, 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-1=2
所以我们可以根据该方法进行业务的判断

在这里插入图片描述

值得注意的是,retryOn()只会重试指定类型的错误以及其子类,并且当抛出的错误类型为非运行是异常的情况需要在方法上面抛出
在这里插入图片描述

另外,我们可以捕获对应的异常,并且在catch中抛出且可以进行业务的控制

在这里插入图片描述

拓展方法

RetryTemplate是Spring Retry提供的核心类,可以用来进行方法调用的重试操作。除了上面提到的execute()方法,RetryTemplate还提供了其他一些常用的方法和配置选项,下面介绍一些常见的用法:

降级操作

execute(RetryCallback<T, E> retryCallback, RecoveryCallback recoveryCallback):除了可以传入一个RetryCallback接口,执行需要重试的方法调用外,还可以传入一个RecoveryCallback接口,用于在重试次数达到上限后执行降级操作。RecoveryCallback接口提供一个recover(RetryContext context)方法,可以在该方法中实现降级逻辑。例如:

RetryTemplate retryTemplate = RetryTemplate.builder().maxAttempts(3).build();retryTemplate.execute((RetryCallback<Void, RuntimeException>) context -> {// 需要重试的方法调用someService.someMethod();return null;
}, (RecoveryCallback<Void>) 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((RetryCallback<Void, 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((RetryCallback<Void, 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.hkea.cn/news/239101/

相关文章:

  • 网站建设服务怎么样近期国内热点新闻事件
  • 阿里巴巴网站国际站建设seo托管服务
  • 企业网站优化之如何做需求分析网奇seo赚钱培训
  • 施工企业会计制度收入确认规定百度自然排名优化
  • 校园网站建设意义网络营销的特点有哪些
  • 内江做网站哪里便宜google搜索关键词热度
  • 福建省建设银行招聘网站网络推广员压力大吗
  • 动态网站订单怎么做搜索引擎优化营销
  • html5行业网站最近有哪些新闻
  • 做网站业务的怎么寻找客户在哪里打广告效果最好
  • 广东深圳seo服务内容
  • 做网站怎么备案网络服务有限公司
  • 网站主页特效欣赏百度官网下载电脑版
  • php mysql开发网站开发任何小说都能搜到的软件
  • the7 wordpress主题宁波seo外包费用
  • 云南建筑培训网seo刷点击软件
  • 男女做暖网站h5页面制作平台
  • 可以做puzzle的网站百度关键词排名提升工具
  • 竞网网站建设南宁网站seo大概多少钱
  • 114黄页信息网宝鸡seo培训
  • 东南亚做棋牌网站挖掘爱站网
  • 中国工程建设招标网官方网站谷歌查询关键词的工具叫什么
  • wordpress管理员密码忘记成都seo招聘
  • 武汉企业建站系统模板下载官方正版百度
  • 上海做网站国际财经新闻
  • 用废旧盒子做家用物品网站seo排名工具
  • 企业铭做网站域名解析在线查询
  • 怎么注册自己的小程序网站优化分析
  • 荆州网站建设流程网站设计培训
  • 网站支付怎么做的seo职业技能培训班