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

太原网站排名优化价格泰州企业网站建站模板

太原网站排名优化价格,泰州企业网站建站模板,wordpress win8,济南网站模板Spring Retry——方法重试、方法重新调用 简介:使用1. 配置2.使用 总结注意 简介: Spring Retry 是一个 Spring Boot 官方提供的支持重试机制的库。它提供了一种简单而灵活的方式来处理方法调用可能失败的情况,通过自动重试失败的操作&#…

Spring Retry——方法重试、方法重新调用

    • 简介:
    • 使用
      • 1. 配置
      • 2.使用
    • 总结
    • 注意

简介:

Spring Retry 是一个 Spring Boot 官方提供的支持重试机制的库。它提供了一种简单而灵活的方式来处理方法调用可能失败的情况,通过自动重试失败的操作,提供了一种可靠的方式来处理潜在的异常或错误。
除此之外:Spring Retry 是基于 Spring AOP(Aspect-Oriented Programming)实现的

Spring Retry 使用了 Spring AOP的切面(Aspect)来定义重试的逻辑。切面可以在方法调用之前、之后或抛出异常时执行特定的代码。通过在切面中定义重试的逻辑,Spring Retry 可以自动捕获异常并重新尝试方法调用,而不需要在每个方法上编写重试逻辑。

使用

1. 配置

为了启用 Spring Retry 的支持,首先要在pom.xml 文件中添加以下依赖项

     	<dependency><groupId>org.springframework.retry</groupId><artifactId>spring-retry</artifactId><version>1.3.1</version></dependency>

因为 Spring Retry 是基于AOP实现的所以我们还要引入aop的相关依赖

  		 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>

2.使用

1、在pom.xml文件中配置完之后,我们还要再启动类上添加@EnableRetry注解。

@SpringBootApplication
@EnableRetry
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

2、@Retryable
在需要重试的方法上加上@Retryable注解,当指定的方法抛出异常之后@Retryable抓取到异常并重新调用该方法

    @Retryablepublic void retry (String s){ //123System.out.println(s);System.out.println("###########");throw new RuntimeException();}

控制台输出:

123
###########
123
###########
123
###########

由于没有指定任何异常,因此将尝试重试所有异常。此外,一旦达到最大尝试次数,但仍有异常,就会抛出 ExhaustedRetryException。

  • interceptor:可以通过该参数,指定方法拦截器的bean名称
  • value:抛出指定异常才会重试
  • include:和value一样,默认为空,当exclude也为空时,默认所以异常
  • exclude:指定不处理的异常
  • maxAttempts:最大重试次数,默认3次
  • backoff:重试等待策略,默认使用@Backoff,@Backoff的value默认为1000L,我们设置为2000L;multiplier(指定延迟倍数)默认为0,表示固定暂停1秒后进行重试,如果把multiplier设置为1.5,则第一次重试为2秒,第二次为3秒,第三次为4.5秒。

3、@Recover
当 @Retryable指定的方法的重试次数用尽之后,程序就会走到 @Recover注解的方法中

   @Retryablepublic void retry (String s){System.out.println(s);System.out.println("###########");throw new RuntimeException();}@Recoverpublic void recover(){System.out.println("======>recover");}

控制台输出:

123
###########
123
###########
123
###########
======>recover

4、RetryTemplate
除此之外 Spring Retry不止可以使用注解的形式还配备了RetryTemplate接口方便以接口的形式使用

@Testpublic void test(){RetryTemplate retryTemplate = RetryTemplate.builder().maxAttempts(3).build();retryTemplate.execute((RetryCallback<Void, RuntimeException>) context -> {// 需要重试的方法调用needRetry();return null;}, (RecoveryCallback<Void>) context -> {// 重试次数达到上限后执行降级操作fallback();return null;});}public void needRetry(){System.out.println("0123456");System.out.println("=======");throw new RuntimeException();}public void fallback(){System.out.println("*******");System.out.println("********");throw new RuntimeException();}

控制台输出:

0123456
=======
0123456
=======
0123456
=======
*******
********

总结

Spring Retry 是一个 Spring Boot 官方提供的支持重试机制的库。它提供了一种简单而灵活的方式来处理方法调用可能失败的情况,通过自动重试失败的操作,提供了一种可靠的方式来处理潜在的异常或错误。

Spring Retry 的主要特点包括:

  • 简单易用:通过在方法上添加 @Retryable 注解,可以轻松启用重试机制。同时,还可以使用 @Backoff 注解来配置指数退避策略。
  • 自定义重试逻辑:通过实现 RetryTemplate 接口,可以自定义重试的逻辑,包括重试次数、休眠时间、异常类型等。
  • 支持多种触发条件:Spring Retry 支持多种触发重试的条件,包括抛出异常、返回特定值等。 集成性好:Spring Retry 与 Spring Boot 集成良好,可以方便地与其他 Spring 功能(如监控、日志等)集成。

Spring Retry 相比递归在处理重试逻辑方面有以下优点:

  • 简单易用:Spring Retry 提供了一种声明式的方式来处理重试逻辑,只需要在方法上添加相应的注解即可。相比之下,递归需要手动编写循环和条件判断,代码相对复杂且容易出错。
  • 可配置性强:Spring Retry 提供了丰富的配置选项,例如重试次数、休眠时间、异常类型等,可以根据实际需求进行灵活配置。而递归的重试机制通常需要手动编写逻辑,难以实现灵活的配置。
  • 资源利用率高:Spring Retry 在重试之间会根据配置进行休眠,避免了无休止的递归调用造成的栈溢出问题。同时,Spring Retry 使用了循环重试机制,每次重试都会重新计算下一次重试的时间,避免了资源的浪费。
  • 扩展性强:Spring Retry 提供了事件通知和自定义策略等扩展点,可以根据实际需求进行定制和扩展。而递归的方式通常难以实现这些高级功能。

注意

在使用过程中,发现当异常被try捕捉到之后将不会触发@Retryable 重试

http://www.yayakq.cn/news/26937/

相关文章:

  • 专业云南做网站网站开发就业薪酬
  • 新干县城乡建设局网站10强装饰公司
  • 作网站公司网站流量查询
  • 创建一个网站 站点根文件夹为中英文网站建设 大概要多久
  • 湖南省长沙建设厅网站宁波正规优化seo价格
  • 青岛住房和城乡建设部网站wordpress 搭建论坛
  • 网站建设谈单思路公司免费建网站
  • 网站设计项目书聊城手机网站建设费用
  • 广东省住房建设部网站个人商城系统
  • 用网站做的人工智能网页设计代表性案例
  • 网站开发项目答辩视频信息流广告二级代理
  • 彩票网站怎么做代理怎建立自己网站做淘宝客
  • 东莞效果好的网站建设.net网站空间
  • 包头做网站公司如何建设网站济南兴田德润o简介电话
  • 自己做传奇网站wordpress 企业模板
  • 网站制作过程内容半夜看的直播app推荐知乎
  • 网站建设判断题2022年河北二建考试最新消息
  • 天津网站页面设计杭州网站建设 乐云践新专家
  • 移动网站打不开苏州专业网站建设
  • 制作网站一般多少钱慧达seo免登录发布
  • 搭建网站开发网站环境厦门唯一官方网站
  • 中山微网站建设报价上海高端建设网站
  • ai智能建站保定网站建设咨询
  • 芜湖网站 建设响应式外贸网站案例
  • 中山建设网站南充做网站电话
  • 广告传媒公司网站怎么做南昌做网站开发的公司
  • 外链建设对网站的影响线上广告代理平台
  • 外贸网站建设公司服务百度如何建网站
  • 网站建设招标方案wordpress 安装 此网页包含重定向循环
  • 文化馆网站建设方案做网站策划遇到的问题