application.yml
6.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# 端口
server:
port: 9080
# 应用名
spring:
application:
name: spring-boot-resilience4j-demo
# 监控信息配置
management:
endpoints:
web:
exposure:
include: '*'
health:
show-details: always
diskspace:
enabled: false
circuitbreakers:
enabled: true
ratelimiters:
enabled: false
metrics:
tags:
application: ${spring.application.name}
distribution:
percentiles-histogram:
http:
server:
requests: true
resilience4j:
circuitbreaker:
calls: true
# resillience4j 舱壁配置
resilience4j.bulkhead:
configs:
base:
# 最大并发调用数量
maxConcurrentCalls: 2
# 线程尝试进入舱壁的最大等待时间(单位:毫秒)
maxWaitDuration: 10000
#
writableStackTraceEnabled: true
# 时间消费者缓冲区
eventConsumerBufferSize: 10
instances:
bulkheadInstance:
# 指定使用 base 配置
baseConfig: base
# resillience4j 熔断器配置
resilience4j.circuitbreaker:
configs:
basecount:
# 滑动窗口类型:COUNT_BASED(基于计数),TIME_BASED(基于时间)
slidingWindowType: COUNT_BASED
# 窗口大小(滑动窗口类型是COUNT_BASED,单位为个;滑动窗口类型是TIME_BASED,单位为秒)
slidingWindowSize: 10
# 失败率百分比权重(50%),大于等于此值则熔断器打开
failureRateThreshold: 50
# 慢调用百分比(认为所有调用时间超过 slowCallDurationThreshold的都是慢调用),大于等于此值则熔断器打开
slowCallRateThreshold: 50
# 调用持续多长时间被认定为慢调用,并增加慢调用比例
slowCallDurationThreshold: 1100
# 熔断器状态为半打开时,允许的调用数量
permittedNumberOfCallsInHalfOpenState: 2
# 半打开状态等待的最大持续时间(0代表无限等待直到允许的调用都完成)
#maxWaitDurationInHalfOpenState: 0
# 计算失败率或慢调用前,要求的最小调用数量
minimumNumberOfCalls: 2
# 熔断器状态由 OPEN 到 HALF_OPEN 等待的时间
waitDurationInOpenState: 60000
# 熔断器状态是否自动从 OPEN 转到 HALF_OPEN。true:自动(会使用1个线程去自动切换状态);false:当有新的调用进来时再进行转换
automaticTransitionFromOpenToHalfOpenEnabled: false
recordExceptions:
- java.lang.Exception
ignoreExceptions:
- com.seektruth.demo.spring.boot.resilience4j.exception.ResultException
# 定制化 Predicate 用于判断此异常是否为失败调用。
#recordFailurePredicate: org.spring.boot.resilience4j.exception.RecordFailurePredicate
# 定制化 Predicate 用于判断此异常是否被忽略。
#ignoreExceptionPredicate:
basetime:
# 滑动窗口类型:COUNT_BASED(基于计数),TIME_BASED(基于时间)
slidingWindowType: TIME_BASED
# 窗口大小(滑动窗口类型是COUNT_BASED,单位为个;滑动窗口类型是TIME_BASED,单位为秒)
slidingWindowSize: 10
# 失败率百分比权重(50%),大于等于此值则熔断器打开
failureRateThreshold: 50
# 慢调用百分比(认为所有调用时间超过 slowCallDurationThreshold的都是慢调用),大于等于此值则熔断器打开
slowCallRateThreshold: 50
# 调用持续多长时间被认定为慢调用,并增加慢调用比例
slowCallDurationThreshold: 1100
# 熔断器状态为半打开时,允许的调用数量
permittedNumberOfCallsInHalfOpenState: 2
# 半打开状态等待的最大持续时间(0代表无限等待直到允许的调用都完成)
#maxWaitDurationInHalfOpenState: 0
# 计算失败率或慢调用前,要求的最小调用数量
minimumNumberOfCalls: 2
# 熔断器状态由 OPEN 到 HALF_OPEN 等待的时间
waitDurationInOpenState: 60000
# 熔断器状态是否自动从 OPEN 转到 HALF_OPEN。true:自动(会使用1个线程去自动切换状态);false:当有新的调用进来时再进行转换
automaticTransitionFromOpenToHalfOpenEnabled: false
recordExceptions:
- java.lang.Exception
ignoreExceptions:
- com.seektruth.demo.spring.boot.resilience4j.exception.ResultException
# 定制化 Predicate 用于判断此异常是否为失败调用。
#recordFailurePredicate: org.spring.boot.resilience4j.exception.RecordFailurePredicate
# 定制化 Predicate 用于判断此异常是否被忽略。
#ignoreExceptionPredicate:
instances:
circuitbreakerCountBased:
baseConfig: basecount
circuitbreakerTimeBased:
baseConfig: basetime
# resilience4j RateLimiter
resilience4j.ratelimiter:
configs:
base:
# 在一个limit刷新周期内,可用的许可数量
limitForPeriod: 50
# limit 刷新的周期(单位:纳秒)
limitRefreshPeriod: 500
# 线程等待许可的等待时间(单位:秒)
timeoutDuration: 2
# subscribeForEvents:
# allowHealthIndicatorToFail:
# registerHealthIndicator:
# eventConsumerBufferSize:
# writableStackTraceEnabled:
instances:
ratelimiterInstance:
baseConfig: base
# resilience4j Retry
resilience4j.retry:
configs:
base:
# 等待下次重试时间
waitDuration:
# 根据尝试次数和结果或异常修改失败后的等待间隔的函数。
# intervalBiFunction:
# 最大重试次数
maxAttempts: 2
# 断言异常是否需要重试
# retryExceptionPredicate:
# 断言返回的结果是否需要重试
# resultPredicate:
# 需要重试的 异常列表
retryExceptions:
- java.lang.Exception
# 忽略重试的 异常列表
ignoreExceptions:
- java.lang.Exception
# 重试事件缓冲区大小
eventConsumerBufferSize: 10
# 开启指数回退策略
enableExponentialBackoff: false
# 指数回退的乘数
# exponentialBackoffMultiplier:
# 指数回退最大间隔
# exponentialMaxWaitDuration:
# 开启或关闭随机延迟策略
enableRandomizedWait: false
# 随机延迟因子
# randomizedWaitFactor:
instances:
retryinInstance:
baseConfig: base
# resilience4j TimeLimiter
resilience4j.TimeLimiter:
configs:
base:
# 超时时间(单位:秒)
timeoutDuration: 2
# 取消正在执行的 Future
cancelRunningFuture: true
# 超时事件缓冲区大小
eventConsumerBufferSize: 10
instances:
timelimiterInstance:
baseConfig: base