spring-retry主要是为了规范化请求重试的逻辑,主要应用于调用外部服务的场景,使用例子如下:

        RetryTemplate template = new RetryTemplate();// 重试策略:次数重试策略SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy(3, Collections.singletonMap(Exception.class, true));template.setRetryPolicy(retryPolicy);// 退避策略:指数退避策略ExponentialBackOffPolicy backOffPolicy = new ExponentialBackOffPolicy();backOffPolicy.setInitialInterval(100);backOffPolicy.setMaxInterval(3000);backOffPolicy.setMultiplier(2);backOffPolicy.setSleeper(new ThreadWaitSleeper());template.setBackOffPolicy(backOffPolicy);

主要的类说明如下:
1 重试策略: SimpleRetryPolicy policy = new SimpleRetryPolicy(5, Collections.singletonMap(Exception.class, true));
参数retrableExceptions表示哪些异常类需要重试,可以不填,不填时默认就是Collections.singletonMap(Exception.class, true)
2 退避策略:指数退避策略
ExponentialBackOffPolicy backOffPolicy = new ExponentialBackOffPolicy(),表示重试的间隔,为了防止固定间隔同时进行请求重试,最好使用非固定时间的重试间隔,等待
期间是Thread.sleep(backOffPeriod)实现的休眠
3 RetryContext上下文对象可以知道当前的重试次数,最近一次的异常对象等信息
4 RecoveryCallback对象是在重试次数达到最大值时兜底操作,比如返回null值,或者一个默认值
5 spring-retry也实现了简单的熔断器的功能

spring-retry小结相关推荐

  1. foxmail邮件加载失败重试_java retry(重试) spring retry, guava retrying 详解

    系列说明 java retry 的一步步实现机制. java-retry 源码地址 情景导入 简单的需求 产品经理:实现一个按条件,查询用户信息的服务. 小明:好的.没问题. 代码 UserServi ...

  2. java retry(重试) spring retry, guava retrying 详解

    转载 自 http://blog.51cto.com/9250070/2156431 系列说明 java retry 的一步步实现机制. java-retry 源码地址 情景导入 简单的需求 产品经理 ...

  3. 针对Spring的Spring Retry 我发现了这样一个大家都不知道的技巧!

    外部服务对于调用者来说一般都是不可靠的,尤其是在网络环境比较差的情况下,网络抖动很容易导致请求超时等异常情况,这时候就需要使用失败重试策略重新调用 API 接口来获取.重试策略在服务治理方面也有很广泛 ...

  4. Spring Retry 重试机制实现及原理

    概要 Spring实现了一套重试机制,功能简单实用.Spring Retry是从Spring Batch独立出来的一个功能,已经广泛应用于Spring Batch,Spring Integration ...

  5. java retry 设置上限_java-如何设置Spring Retry模板重试最大尝试次数:无限

    我想用Spring Retry修改数据库连接的创建,以便在应用程序启动时数据库关闭时再试一次.我不想限制重试次数.我应该如何配置策略来做到这一点. 我当前的代码(我知道在这种状态下它限制为100): ...

  6. 高级JAVA - 手写简单的重试组件学习Spring Retry

    目录 一 . 定义注解 二 . 利用cglib代理扩展重试业务 三 . 编写代理类 , 使用自定义的XRetryInterceptor作为拦截器 四 . 编写相关业务方法 , 测试代码 五 . 测试结 ...

  7. Spring异常重试框架Spring Retry

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

  8. Spring retry重试框架

    spring retry是从spring batch独立出来的一个能功能,主要实现了重试和熔断.对于重试是有场景限制的,不是什么场景都适合重试,比如参数校验不合法.写操作等(要考虑写是否幂等)都不适合 ...

  9. Spring Retry # Stateful Retry

    Spring Retry中的重试,分为无状态的重试和有状态的重试: 简述 有状态重试通常是用在message-driven 的应用中,从消息中间件比如RabbitMQ等接收到的消息,如果应用处理失败, ...

  10. 重试框架Spring retry实践

    spring retry是从spring batch独立出来的一个能功能,主要实现了重试和熔断.对于重试是有场景限制的,不是什么场景都适合重试,比如参数校验不合法.写操作等(要考虑写是否幂等)都不适合 ...

最新文章

  1. linux中readl()和writel()函数---用于读写寄存器
  2. 华为《5G业务商业价值评估》白皮书!
  3. 详解python中的用法_详解python中*号的用法
  4. java mysql 文本导入数据语句_Java利用MYSQL LOAD DATA LOCAL INFILE实现大批量导入数据到MySQL...
  5. rocketmq queue_RocketMQ 实战(三) - 消息的有序性
  6. 使用回调技术实现局部刷新
  7. mysql是bsd协议吗_freebsd下实现mysql的自动备份
  8. Flask+Mysql搭建网站之数据库问题
  9. 关于十二平均律及律学发展简史
  10. PoE交换机可以当普通交换机吗?
  11. 被遗忘的艺术——图思维方式
  12. UE4入门实例13(制作外发光材质及TwoSidedSign、VertexNormalWS节点)
  13. 鸿蒙开发|呼吸训练实战项目(一)
  14. 手把手学习Vue3.0:CSS样式基础和HTML5基础收藏
  15. cad角度命令怎么输入_新手入门,学习CAD必须掌握,教你使用标注命令,绘图效率翻一倍...
  16. 阅读软件怎么添加书源_书迷小说|手机阅读软件 千个书源 搜索换源
  17. python中turtle画小草_python
  18. 大数据开发工程师面试题答案
  19. 第六篇:weblogic之被管服务器的创建
  20. 一个涂鸦笔记本的自定义View第三方库

热门文章

  1. 面对 996,程序员如何利用“碎片时间”涨薪?
  2. 想用 Python3 破冰人工智能?首先你得懂这些数学方法!
  3. 小姐姐公开征婚高智商 IT 男:微信号竟要质数解密?
  4. 你好,未来! | 2018腾讯“云+未来”峰会五月启幕
  5. 2019 年对 VR 设备的五个期待
  6. 如果这个世界没有乔布斯和盖茨
  7. Oracle 甩手 Java EE,Eclipse 基金会成新东家
  8. java随机生成数字代码,详解系列文章
  9. 字节大牛教你手撕Java学习,大厂直通车!
  10. 阳江口碑好的java培训价格