前言
需求
为了防止网络抖动问题,需要进行重试处理,重试达到阈值后进行告警通知,做到问题及时响应
技术选型
| 类型 | 同步、异步 | 是否支持声明式调用(注解) | 是否支持监控 |
|---|---|---|---|
| resilience4j-retry | 同步 | 是 | 是 |
| Guava Retry | 同步 | 否 | 否,可通过监听器自行实现监控统计 |
| Spring Retry | 同步 | 是 | 否,可通过监听器自行实现监控统计 |
基于以上方案的对比,选择了使用resilience4j-retry,主要基于以下两点:
- 本身提供了监控数据,可完美接入premethus
- resilience4j除了提供重试能力,还具备Hystrix相同的能力,包括断路器、隔断、限流、缓存。提供与Spring Boot集成的依赖,大大简化了集成成本。(后期可考虑从Hystrix迁移到resilience4j)
提出问题
- resilience4j-retrry怎么集成到项目中以及怎么使用?
- 怎样自定义时间间隔?
- resilience4j-retry实现原理?
- 监控数据如何统计以及premethus如何采集?
问题分析
resilience4j-retrry如何使用
- maven引入resilience4j-spring-boot2包
<dependency> <groupId>io.github.resilience4j</groupId> <artifactId>resilience4j-spring-boot2</artifactId> <version>1.7.1</version> </dependency> - 配置重试服务
// 对应@Retry注解的name属性 resilience4j.retry.instances.sendConfirmEmail.max-at

本文详细介绍了如何在Spring Boot项目中集成resilience4j-retry库,包括配置重试规则、自定义时间间隔,以及源码解析和监控数据统计。讨论了重试策略的适用场景和潜在问题,以及如何通过Praemethus采集重试数据进行性能监控。
最低0.47元/天 解锁文章
2764





