Reactor 整合 Resilence4j
1 引入 pom 包
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-all</artifactId>
</dependency>
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-spring-boot2</artifactId>
</dependency>
2 配置说明
2.1 限流 ratelimiter
两个限流配置:backendA 1s 中最多允许 10 次请求;
backendB 每 500ms 最多允许 6 次请求。
resilience4j.ratelimiter:
instances:
backendA:
limitForPeriod: 10
limitRefreshPeriod: 1s
timeoutDuration: 10ms
registerHealthIndicator: true
eventConsumerBufferSize: 100
backendB:
limitForPeriod: 6
limitRefreshPeriod: 500ms
timeoutDuration: 3s
| 配置属性 | 默认值 | 描述 |
|---|---|---|
| timeoutDuration | 5【s】 | 一个线程等待许可的默认等待时间 |
| limitRefreshPeriod | 500【ns】 | 限制刷新的周期。在每个周期之后,速率限制器将其权限计数设置回 limitForPeriod 值 |
| limitForPeriod | 50 | 一个 limitRefreshPeriod (周期)允许访问的数量(许可数量) |
2.2 重试 retry
注意指定需要重试的异常,不是所有的异常重试都有效。比如 DB 相关校验异常,如唯一约束等,重试也不会成功的。
重试配置:
resilience4j.retry:
instances:
backendA:
maxAttempts: 3
waitDuration: 10s
enableExponentialBackoff: true
exponentialBackoffMultiplier: 2
retryExceptions:
- org.springframework.web.client.HttpServerErrorException
- java.io.IOException
backendB:
maxAttempts: 3
waitDuration

本文介绍如何在Reactor中整合Resilience4j,实现限流、重试、断路器等功能。通过配置限流器、重试器等组件,提高系统的稳定性和可靠性。
最低0.47元/天 解锁文章
867

被折叠的 条评论
为什么被折叠?



