一个 Spring 注解轻松搞定循环重试功能!

发布时间:2023-05-08 09:38:46

  什么是@Retryable?

  spring系列spring-retry它是另一个可以帮助我们以标准的方式处理任何特定操作的实用程序模块。在spring-retry所有配置都是基于简单的注释。

  简要说明注释中几个参数的含义:value:抛出指定异常后,将进行重试 include:和value一样,默认为空,当exclude也为空时,默认为所有异常 exclude:指定不处理的异常 maxAttempts:最大重试次数默认为3次 backoff:重试等待策略,默认使用@Backoff,@Backoffvalue默认为1000L,我们设置为2000L;multiplier(指定延迟倍数)默认为0,说明固定暂停1秒后重试。multiplier如果设置为1.5,第一次重试为2秒,第二次为3秒,第三次为4.5秒。 另外,最新 Java 整理好面试题,可以在Java面试库小程序上在线刷题。

  当重试耗尽或失败时,会发生什么?

  当重试耗尽时,RetryOperations控制可以传递给另一个回调,即RecoveryCallback。Spring-Retry还提供了@Recover注意,用于@retryable重试失败后的处理方法。如果不需要回调方法,可以直接不写回调方法,那么实现的效果是,重试次数结束后,如果仍然不成功,不符合业务判断,就会抛出异常。

  对于@Recover应特别注意注释方法: 必须与方法的返回值相匹配@Retryable方法一致 方法的第一个参数必须是Throwable类型,建议与@Retryable配置异常一致,其他参数,需要哪个参数,可以写进去(@Recover有些方法))有些方法) 回调方法和重试方法写在同一实现类中 注意事项 因为是基于AOP实现的,所以不支持类中的自调用方法 如果重试失败,需要给@Recover后续处理注释的方法,那么这种重试的方法不能有返回值,只能是void 不能在该方法中使用try catch,异常只能抛出 @Recover注释打开重试失败后调用的方法(注意与重处理方法相同),注释的方法参数必须是@Retryable抛出的异常,否则无法识别,可在此方法中进行日志处理。

  本文简要介绍了Springboot中的SpringbootRetryable当需要重试时,使用主要适用场景和注意事项仍然非常有用。

上一篇 ‘@Test‘ not applicable to type;使用@Test测试时出现的问题及解决办法。
下一篇 ReentrantLock全解读

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题