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

网站域名使用费wordpress数据库恢复插件

网站域名使用费,wordpress数据库恢复插件,服务好的高端网站建设公司,重庆网站建设公司是什么在日常开发过程中,难免会与第三方接口发生交互,例如:短信发送、远程服务调用、争抢锁等场景,当正常调用发生异常时,例如:网络抖动,这些间歇性的异常在一段时候之后会自行恢复,程序为…

在日常开发过程中,难免会与第三方接口发生交互,例如:短信发送、远程服务调用、争抢锁等场景,当正常调用发生异常时,例如:网络抖动,这些间歇性的异常在一段时候之后会自行恢复,程序为了更加健壮并且更不容易出现故障,需要重新触发业务操作,以防止间歇性的异常对程序照成的影响。常用的重试策略,比如通过 while 循环手动重复调用或是通过 JDK/CGLib 动态代理的方式来进行重试。但是这种方法比较笨重,且对原有逻辑代码的入侵性比较大。

1、引入spring-retry

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

这里我们还引入了 aop 的依赖,因为 spring-retry 的原理就是基于 aop 来实现的

2、开启spring-retry

启动类上增加注解 @EnableRetry

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

3、@Retryable

在需要重试的方法上增加注解 @Retryable,表示该方法需要重试

@Component
public class TestRetry {int a = 0;@Retryable(value = {RuntimeException.class}, maxAttempts = 5, backoff = @Backoff(delay = 1000, multiplier = 2))public String test() {a++;System.out.println(a + " - " + System.currentTimeMillis());if (a < 10) {throw new RuntimeException("未满足条件");}return "执行成功";}}

@Retryable 注解

  • value,可重试的异常类型。含义同include。默认为空(如果excludes也为空,则重试所有异常)
  • include:可重试的异常类型。默认为空(如果excludes也为空,则重试所有异常)
  • exclude:无需重试的异常类型。默认为空(如果includes也为空,则重试所有异常)
  • maxAttempts,最大重试次数(包括第一次失败),默认为3次
  • backoff:重试等待策略,下面会在@Backoff中介绍
  • recover,表示重试次数到达最大重试次数后的回调方法

@Backoff 注解

  • delay,重试之间的等待时间(以毫秒为单位)
  • maxDelay,重试之间的最大等待时间(以毫秒为单位)
  • multiplier,指定延迟的倍数
  • delayExpression,重试之间的等待时间表达式
  • maxDelayExpression,重试之间的最大等待时间表达式
  • multiplierExpression,指定延迟的倍数表达式
  • random,随机指定延迟时间

4、重试耗尽

当重试耗尽时,RetryOperations 可以将控制传递给另一个回调,即 RecoveryCallback。Spring-Retry 还提供了 @Recover 注解,用于 @Retryable 重试失败后处理方法。若不需要重试失败后的处理方法,则不写回调方法,重试耗尽后抛出异常。

@Recover
public String recoverTest(RuntimeException e) {return "回调方法-" + e.getMessage();
}
  • 方法的返回值必须与 @Retryable 方法一致
  • 方法的第一个参数,必须是 Throwable 类型的,建议是与 @Retryable 配置的异常一致,其他的参数,需要哪个参数,写进去就可以了(@Recover 方法中有的)
  • 该回调方法与重试方法写在同一个实现类里面

若同一个实现类中有多个回调方法,我们需要使用 recover 属性指定回调的方法名

@Component
public class TestRetry {int a = 0;@Retryable(recover = "recoverTest1", value = {RuntimeException.class}, maxAttempts = 5, backoff = @Backoff(delay = 1000, multiplier = 2))public String test() {a++;System.out.println(a + " - " + System.currentTimeMillis());if (a < 10) {throw new RuntimeException("未满足条件");}return "执行成功";}@Recoverpublic String recoverTest(RuntimeException e) {return "回调方法-" + e.getMessage();}@Recoverpublic String recoverTest1(RuntimeException e) {return "回调方法1-" + e.getMessage();}
}

指定了回调方法为 recoverTest1

5、注意事项

  • 由于是基于 AOP 实现,所以不支持类里自调用方法
  • 如果重试失败需要给 @Recover 注解的方法做后续处理,那这个重试的方法不能有返回值,只能是 void
  • 方法内不能使用 try catch,只能往外抛异常
  • @Recover 注解来开启重试失败后调用的方法(注意,需跟重处理方法在同一个类中),此注解注释的方法参数一定要是 @Retryable 抛出的异常,否则无法识别,可以在该方法中进行日志处理。

如您在阅读中发现不足,欢迎留言!!!

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

相关文章:

  • 河北商城网站建设价格低公司seo是指什么意思
  • 内蒙和城乡建设部网站聚搜济南网站建设公司
  • mvc做的游戏网站站长之家排行榜
  • 企业网站建设自己的官网那些网站建设的好
  • 网络公司怎样推广网站保定到沧州
  • 做网站选大公司好还是小公司好企业网站建设排名价格
  • 北京网站建设公司网络营销外包网络建站报价网站建设 博采网络 学校
  • html5网络公司网站模板网站制作公司 云南
  • 白沟网站建设泰安网站制作
  • 杭州大型网站建设中国最强十大央企排名
  • 在线商城网站怎么做怎么制作网站记事本
  • 网站编程赚钱大理州建设局投诉网站
  • 尊园地产做的网站开源crm客户管理系统
  • 如何做类似于淘宝的网站做网站的职责
  • 做一个网站怎么做数据库佛山做网站的哪个好
  • 济南手机网站建设公司报价wordpress阿里云储存
  • 临沂网站建网站建设交印花税嘛
  • 建设银行不良资产处置网站网站都是每年续费的吗
  • php 网站伪静态福田做棋牌网站建设多少钱
  • 企业网站策划文案做网站电子版报价模板
  • 舞蹈培训机构网站建设手机端网站设计模板
  • 网站建设推广方案书网站你懂我意思正能量app
  • 建个网站的电话网站支付平台是怎么做的
  • 南京网站销售网站开发培训怎么样
  • 设计网站公司北京软件外包
  • 人人建站淮北做网站的公司
  • 网站建设多少钱个人安徽网站优化厂家报价
  • 搭建wordpress后干什么石家庄搜索引擎优化
  • 青岛公司网站建设价格项目经理网站开发流程
  • 手机网站案列南宁网站建设速成培训