返回顶部
首页 > 资讯 > 精选 >怎么使用Spring注解实现循环重试功能
  • 804
分享到

怎么使用Spring注解实现循环重试功能

2023-07-05 23:07:57 804人浏览 独家记忆
摘要

这篇文章主要介绍“怎么使用spring注解实现循环重试功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用Spring注解实现循环重试功能”文章能帮助大家解决问题。一、@Retryable是什

这篇文章主要介绍“怎么使用spring注解实现循环重试功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用Spring注解实现循环重试功能”文章能帮助大家解决问题。

一、@Retryable是什么

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

二、使用步骤

POM依赖

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

在启动类上加上启用注解@EnableRetry

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

在方法上添加@Retryable

@Servicepublic class TestRetryServiceImpl implements TestRetryService {     @Override    @Retryable(value = Exception.class,maxAttempts = 3,backoff = @Backoff(delay = 2000,multiplier = 1.5))    public int test(int code) throws Exception{        System.out.println("test被调用,时间:"+LocalTime.now());          if (code==0){              throw new Exception("情况不对头!");          }        System.out.println("test被调用,情况对头了!");         return 200;    }}

来简单解释一下注解中几个参数的含义:

  • value:抛出指定异常才会重试

  • include:和value一样,默认为空,当exclude也为空时,默认所有异常

  • exclude:指定不处理的异常

  • maxAttempts:最大重试次数,默认3次

  • backoff:重试等待策略,默认使用@Backoff,@Backoff的value默认为1000L,我们设置为2000L;multiplier(指定延迟倍数)默认为0,表示固定暂停1秒后进行重试,如果把multiplier设置为1.5,则第一次重试为2秒,第二次为3秒,第三次为4.5秒。

当重试耗尽时还是失败,会出现什么情况呢?

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

@Recover

@Recoverpublic int recover(Exception e, int code){   System.out.println("回调方法执行!!!!");   //记日志数据库 或者调用其余的方法    return 400;}

可以看到传参里面写的是 Exception e,这个是作为回调的接头暗号(重试次数用完了,还是失败,我们抛出这个Exception e通知触发这个回调方法)。

对于@Recover注解的方法,需要特别注意的是:

  • 方法的返回值必须与@Retryable方法一致

  • 方法的第一个参数,必须是Throwable类型的,建议是与@Retryable配置的异常一致,其他的参数,需要哪个参数,写进去就可以了(@Recover方法中有的)

  • 该回调方法与重试方法写在同一个实现类里面

注意事项

  • 由于是基于aop实现,所以不支持类里自调用方法

  • 如果重试失败需要给@Recover注解的方法做后续处理,那这个重试的方法不能有返回值,只能是void

  • 方法内不能使用try catch,只能往外抛异常

  • @Recover注解来开启重试失败后调用的方法(注意,需跟重处理方法在同一个类中),此注解注释的方法参数一定要是@Retryable抛出的异常,否则无法识别,可以在该方法中进行日志处理。

关于“怎么使用Spring注解实现循环重试功能”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: 怎么使用Spring注解实现循环重试功能

本文链接: https://lsjlt.com/news/356156.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么使用Spring注解实现循环重试功能
    这篇文章主要介绍“怎么使用Spring注解实现循环重试功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用Spring注解实现循环重试功能”文章能帮助大家解决问题。一、@Retryable是什...
    99+
    2023-07-05
  • Spring注解实现循环重试功能(适用场景分析)
    目录一、@Retryable是什么?二、使用步骤在实际工作中,重处理是一个非常常见的场景,比如: 发送消息失败。调用远程服务失败。争抢锁失败。 这些错误可能是因为网络波动造成的,等待...
    99+
    2023-05-15
    spring循环重试 Spring注解
  • Spring@Retryable注解轻松搞定循环重试功能
    目录一、@Retryable是什么 二、使用步骤 1.POM依赖2.启用@Retryable 3.在方法上添加@Retryable4.@Recover&...
    99+
    2023-05-17
    Spring @Retryable注解 Spring @Retryable注解循环重试
  • 使用Spring注解怎么实现Bean自动装配功能
    这篇文章将为大家详细讲解有关使用Spring注解怎么实现Bean自动装配功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。使用须知:导入约束:context约束配置注解的支持: contex...
    99+
    2023-06-14
  • 怎么使用Spring注解@Profile实现开发环境/测试环境/生产环境切换
    这篇文章主要介绍了怎么使用Spring注解@Profile实现开发环境/测试环境/生产环境切换的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Spring注解@Profile实现开发环境/测试环境/生产环...
    99+
    2023-07-06
  • 怎么解决spring循环引用
    在Spring中遇到循环引用的问题,可以通过以下几种方式来解决:1. 修改代码结构:检查代码中是否存在循环依赖的问题,尽量避免出现循...
    99+
    2023-08-16
    spring
  • Android中使用VideoView实现一个循环播放功能
    本篇文章给大家分享的是有关Android中使用VideoView实现一个循环播放功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。具体如下:package com.hangch...
    99+
    2023-05-31
    android videoview roi
  • Spring Retry重试怎么使用
    本篇内容介绍了“Spring Retry重试怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!spring-retry是什么?...
    99+
    2023-07-04
  • 使用注解实现Redis缓存功能
    本文实例为大家分享了使用注解实现Redis缓存功能的具体代码,供大家参考,具体内容如下 非关系型内存数据库,有持久化操作, C语言编写的key,value存储系统(区别于mysql的二维表格的形式存储。) rdb:周期性...
    99+
    2022-07-28
    Redis 注解 缓存
  • SpringMVC使用注解实现登录功能
    本文实例为大家分享了SpringMVC使用注解实现登录的具体代码,供大家参考,具体内容如下 一、使用Component\Controller\Service\Repository四大...
    99+
    2024-04-02
  • 在Spring中AOP怎么使用注解来实现
    这期内容当中小编将会给大家带来有关在Spring中AOP怎么使用注解来实现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。spring对AOP的实现提供了很好的支持。下面我们就使用Spring的注解来完成A...
    99+
    2023-05-31
    spring aop
  • 使用@PathVariable注解怎么让spring支持参数带值功能
    本篇文章给大家分享的是有关使用@PathVariable注解怎么让spring支持参数带值功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。@PathVariable的作用获取...
    99+
    2023-06-06
  • Spring注解@Profile实现开发环境/测试环境/生产环境的切换
    目录前言环境搭建项目结构application.ymlapplication-dev.ymlapplication-test.ymlapplication-prod.yml数据源配置...
    99+
    2023-05-15
    Spring @Profile实现环境切换 Spring @Profile环境切换 Spring @Profile环境 Spring @Profile
  • 怎么使用Python+matplotlib实现循环作图
    本篇内容主要讲解“怎么使用Python+matplotlib实现循环作图”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Python+matplotlib实现循环作图”吧!一、前言原始代码...
    99+
    2023-07-02
  • Spring Boot中怎么使用Spring-Retry重试框架
    这篇文章主要介绍“Spring Boot中怎么使用Spring-Retry重试框架”,在日常操作中,相信很多人在Spring Boot中怎么使用Spring-Retry重试框架问题上存在疑惑,小编查阅了各式资料,整理出简...
    99+
    2023-06-30
  • Spring Boot中怎么使用Spring Retry重试框架
    今天小编给大家分享一下Spring Boot中怎么使用Spring Retry重试框架的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获...
    99+
    2023-06-30
  • 怎么在Android中实现一个广告无限循环功能
    今天就跟大家聊聊有关怎么在Android中实现一个广告无限循环功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。代码实现:public class NewsHom...
    99+
    2023-05-30
    android
  • 使用注解怎么实现一个SpringBoot 接口防刷功能
    这篇文章将为大家详细讲解有关使用注解怎么实现一个SpringBoot 接口防刷功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。项目结构如下:一、编写注解类 AccessLimitpacka...
    99+
    2023-06-06
  • 汇编语言功能用循环累加实现乘法
    目录问题1:编程计算2的2次方,结果存在ax中分析:用2+2实现问题2:编程实现2的12次方分析:用loop实现问题3:编程实现123*236,结果存在ax中分析:用236相加123...
    99+
    2024-04-02
  • SpringBoot中使用Spring-Retry重试框架的实现
    目录Maven依赖注解使用开启Retry功能注解@Retryable注解@Recover注解@CircuitBreakerRetryTemplateRetryTemplate配置使用...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作