文档章节

spring boot / cloud (七) 使用@Retryable来进行重处理

wangkang80
 wangkang80
发布于 2017/06/02 09:17
字数 428
阅读 1272
收藏 50
点赞 2
评论 10

spring boot / cloud (七) 使用@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,等组件,都会涉及到重处理,会在后续的章节中讲解


想获得最快更新,请关注公众号

想获得最快更新,请关注公众号

© 著作权归作者所有

共有 人打赏支持
wangkang80
粉丝 345
博文 22
码字总数 34117
作品 3
浦东
高级程序员
加载中

评论(10)

清尘V
清尘V

引用来自“清尘-呵呵”的评论

从网上看到的DEMO都是基于注解,是否有xml配置方式?不一定是SpringBoot,基本的Spring使用

引用来自“一书生”的评论

吐槽一下,OSC的博客评论真心【烂】,居然不能贴代码。
看这里 https://github.com/spring-projects/spring-retry#xml-configuration
其实是支持XML方式的,不过我没验证过,你可以尝试一下。
好的 谢谢 我测试一下
一书生
一书生

引用来自“清尘-呵呵”的评论

从网上看到的DEMO都是基于注解,是否有xml配置方式?不一定是SpringBoot,基本的Spring使用
吐槽一下,OSC的博客评论真心【烂】,居然不能贴代码。
看这里 https://github.com/spring-projects/spring-retry#xml-configuration
其实是支持XML方式的,不过我没验证过,你可以尝试一下。
一书生
一书生

引用来自“清尘-呵呵”的评论

从网上看到的DEMO都是基于注解,是否有xml配置方式?不一定是SpringBoot,基本的Spring使用





一书生
一书生

引用来自“清尘-呵呵”的评论

从网上看到的DEMO都是基于注解,是否有xml配置方式?不一定是SpringBoot,基本的Spring使用

引用来自“wangkang80”的评论

这个貌似没有xml的配置,为何有此需求?

引用来自“清尘-呵呵”的评论

平时开发项目中(SSM)还是用XML居多

引用来自“wangkang80”的评论

这个东西的使用,跟spring是一样的,本身就是注解的.

引用来自“清尘-呵呵”的评论

恩 懂得








See https://github.com/spring-projects/spring-retry
一书生
一书生

引用来自“清尘-呵呵”的评论

从网上看到的DEMO都是基于注解,是否有xml配置方式?不一定是SpringBoot,基本的Spring使用

引用来自“wangkang80”的评论

这个貌似没有xml的配置,为何有此需求?

引用来自“清尘-呵呵”的评论

平时开发项目中(SSM)还是用XML居多

引用来自“wangkang80”的评论

这个东西的使用,跟spring是一样的,本身就是注解的.

引用来自“清尘-呵呵”的评论

恩 懂得
```






```
清尘V
清尘V

引用来自“清尘-呵呵”的评论

从网上看到的DEMO都是基于注解,是否有xml配置方式?不一定是SpringBoot,基本的Spring使用

引用来自“wangkang80”的评论

这个貌似没有xml的配置,为何有此需求?

引用来自“清尘-呵呵”的评论

平时开发项目中(SSM)还是用XML居多

引用来自“wangkang80”的评论

这个东西的使用,跟spring是一样的,本身就是注解的.
恩 懂得
wangkang80
wangkang80

引用来自“清尘-呵呵”的评论

从网上看到的DEMO都是基于注解,是否有xml配置方式?不一定是SpringBoot,基本的Spring使用

引用来自“wangkang80”的评论

这个貌似没有xml的配置,为何有此需求?

引用来自“清尘-呵呵”的评论

平时开发项目中(SSM)还是用XML居多
这个东西的使用,跟spring是一样的,本身就是注解的.
清尘V
清尘V

引用来自“清尘-呵呵”的评论

从网上看到的DEMO都是基于注解,是否有xml配置方式?不一定是SpringBoot,基本的Spring使用

引用来自“wangkang80”的评论

这个貌似没有xml的配置,为何有此需求?
平时开发项目中(SSM)还是用XML居多
wangkang80
wangkang80

引用来自“清尘-呵呵”的评论

从网上看到的DEMO都是基于注解,是否有xml配置方式?不一定是SpringBoot,基本的Spring使用
这个貌似没有xml的配置,为何有此需求?
清尘V
清尘V
从网上看到的DEMO都是基于注解,是否有xml配置方式?不一定是SpringBoot,基本的Spring使用
UDF 集成样例--udf-sample

UDF 基于spring boot / spring cloud 的基础项目,脚手架,主要用于学习和实践 按照spring boot的思想,将各个不同的功能按照starter的形式拆分开来,做到灵活组合 物理架构示意 CI & CD 示意 代...

wangkang80
2017/08/27
344
0
Spring Retry重试机制

在调用第三方接口或者使用mq时,会出现网络抖动,连接超时等网络异常,所以需要重试。为了使处理更加健壮并且不太容易出现故障,后续的尝试操作,有时候会帮助失败的操作最后执行成功。例如,...

aoho
05/09
0
0
Spring Cloud Edgware新特性之四:Zuul routes端点功能增强

Spring Cloud是当前炙手可热的微服务开发框架。它的功能强大,组件丰富,设计优雅。目前Spring Cloud还在不断发展之中。 Spring Cloud即将发布Spring Cloud Edgware 版本。该版本解决了不少B...

周立_ITMuch
2017/10/27
0
0
spring-boot-admin 2.0小试牛刀

序 本文主要展示下spring-boot-admin 2.0版本的新特性 server实例 maven 配置 config client实例 maven 配置 这里配置admin server的地址 运行实例 wallboard wallboard 实例详情 applicatio...

go4it
05/21
0
0
中小企业对Spring Cloud微服务架构实践经验总结的一些思考!

相关阅读: 毕业10年,阻碍你职业发展的最大“拦路虎”到底是什么? 不能All in的人别去创业公司 互联网技术(java框架、分布式、集群)干货视频大全,不看后悔!(免费下载) 作者:张强 来源:...

互联网架构师
07/01
0
0
Spring Cloud入门教程(十):消息总线(Bus)

Spring Cloud入门教程系列: Spring Cloud入门教程(一):服务治理(Eureka) Spring Cloud入门教程(二):客户端负载均衡(Ribbon) Spring Cloud入门教程(三):声明式服务调用(Feign) Spring Cl...

CD826
05/22
0
0
【小马哥】Spring Cloud系列讲座

这里为大家推荐一个不错的Spring Cloud系列讲座,讲师介绍如下: 小马哥,阿里巴巴技术专家,从事十余年Java EE 开发,国内微服务技术讲师。目前主要负责微服务技术推广、架构设计、基础设施...

杜琪
03/02
0
0
深入 Spring Boot : 快速集成 Dubbo + Hystrix

背景 Hystrix 旨在通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包,以...

小致dad
07/02
0
0
Spring cloud 微服务安全解决方案

Spring boot 微服务安全解决方案 作者:netkiller 本文节选自《Netkiller Architect 手札》 Restful 的通信安全有很多中解决方案,例如 1. HTTP Basic Auth 认证 2. Cooke / Session 认证 3. T...

netkiller-
2017/10/21
0
3
【微服务】使用spring cloud搭建微服务框架,整理学习资料

写在前面   使用spring cloud搭建微服务框架,是我最近最主要的工作之一,一开始我使用bubbo加zookeeper制作了一个基于dubbo的微服务框架,然后被架构师否了,架构师曰:此物过时。随即,我...

grootzhang
06/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

实现异步有哪些方法

有哪些方法可以实现异步呢? 方式一:java 线程池 示例: @Test public final void test_ThreadPool() throws InterruptedException { ScheduledThreadPoolExecutor scheduledThre......

黄威
今天
0
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

六库科技
今天
0
0
牛客网刷题

1. 二维数组中的查找(难度:易) 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入...

大不了敲一辈子代码
今天
0
0
linux系统的任务计划、服务管理

linux任务计划cron 在linux下,有时候要在我们不在的时候执行一项命令,或启动一个脚本,可以使用任务计划cron功能。 任务计划要用crontab命令完成 选项: -u 指定某个用户,不加-u表示当前用...

黄昏残影
昨天
0
0
设计模式:单例模式

单例模式的定义是确保某个类在任何情况下都只有一个实例,并且需要提供一个全局的访问点供调用者访问该实例的一种模式。 实现以上模式基于以下必须遵守的两点: 1.构造方法私有化 2.提供一个...

人觉非常君
昨天
0
0
《Linux Perf Master》Edition 0.4 发布

在线阅读:https://riboseyim.gitbook.io/perf 在线阅读:https://www.gitbook.com/book/riboseyim/linux-perf-master/details 百度网盘【pdf、mobi、ePub】:https://pan.baidu.com/s/1C20T......

RiboseYim
昨天
1
0
conda 换源

https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mir......

阿豪boy
昨天
1
0
Confluence 6 安装补丁类文件

Atlassian 支持或者 Atlassian 缺陷修复小组可能针对有一些关键问题会提供补丁来解决这些问题,但是这些问题还没有放到下一个更新版本中。这些问题将会使用 Class 类文件同时在官方 Jira bug...

honeymose
昨天
0
0
非常实用的IDEA插件之总结

1、Alibaba Java Coding Guidelines 经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件!该插件由阿里巴巴P3C项目组研发。P3C...

Gibbons
昨天
1
0
Tomcat介绍,安装jdk,安装tomcat,配置Tomcat监听80端口

Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 java程序写的网站用tomcat+jdk来运行...

TaoXu
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部