发布于 2017-08-20 19:07:39 | 59 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

Spring Boot

Spring Boot 项目旨在简化创建产品级的 Spring 应用和服务。你可通过它来选择不同的 Spring 平台。可创建独立的 Java 应用和 Web 应用,同时提供了命令行工具来允许 'spring scripts'.


本篇文章主要介绍了详解spring boot使用@Retryable来进行重处理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

前言

什么时候需要重处理?

在实际工作中,重处理是一个非常常见的场景,比如:发送消息失败,调用远程服务失败,争抢锁失败,等等,这些错误可能是因为网络波动造成的,等待过后重处理就能成功.通常来说,会用try/catch,while循环之类的语法来进行重处理,但是这样的做法缺乏统一性,并且不是很方便,要多写很多代码.然而spring-retry却可以通过注解,在不入侵原有业务逻辑代码的方式下,优雅的实现重处理功能.

思路

使用@Retryable和@Recover实现重处理,以及重处理失后的回调

实现

1.pom引用


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

2.应用启动类开启retry

....其他注解


@EnableRetry
public class BaseApplication {
  .......
}

3.在指定方法上标记@Retryable来开启重试


 @Retryable(value={A异常.class,B异常.class},
       maxAttempts=重试次数,
       backoff = @Backoff(value = 每次重试延迟毫秒数))
 public Integer retry() {
  LOGGER.info("测试retry");
  final int a = 5;
  int num = new SecureRandom().nextInt();
  if (num % a == 0) {
   return num;
  }
  throw new RetryException("重试失败");
 }

4.在指定方法上标记@Recover来开启重试失败后调用的方法(注意,需跟重处理方法在同一个类中)


 @Recover
 public void recover(A异常 e) {
  // ... do something
 }

 @Recover
 public void recover(B异常 e) {
  // ... do something
 }

结束

演示了单spring boot的应用的,在后续的cloud场景中,如:zuul,等组件,都会涉及到重处理,会在后续的章节中讲解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHPERZ。



相关阅读 :
详解spring boot使用@Retryable来进行重处理
详解Spring Boot 使用slf4j+logback记录日志配置
详解Spring Boot实战之Filter实现使用JWT进行接口认证
详解Spring Boot实战之Filter实现使用JWT进行接口认证
详解Spring Boot实战之Filter实现使用JWT进行接口认证
详解Spring Boot配置使用Logback进行日志记录的实战
详解Spring Boot配置使用Logback进行日志记录的实战
详解Spring Boot配置使用Logback进行日志记录的实战
详解Spring Boot 属性配置和使用
详解Spring Boot Profiles 配置和使用
详解Spring Boot下Druid连接池的使用配置分析
详解spring Boot Cli的配置和使用
最新网友评论  共有(0)条评论 发布评论 返回顶部
月排行榜

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务