Configuring Spring Retry Circuit Breakers
Spring Retry 为 Spring 应用程序提供声明性重试支持。该项目的一个子集包括实现熔断器功能的能力。Spring Retry 通过结合其 CircuitBreakerRetryPolicy
and a stateful retry
提供熔断器实现。使用 Spring Retry 创建的所有熔断器将使用 CircuitBreakerRetryPolicy
和 DefaultRetryState
创建。这两个类都可以使用 SpringRetryConfigBuilder
配置。
Spring Retry provides declarative retry support for Spring applications.
A subset of the project includes the ability to implement circuit breaker functionality.
Spring Retry provides a circuit breaker implementation via a combination of it’s
CircuitBreakerRetryPolicy
and a stateful retry.
All circuit breakers created using Spring Retry will be created using the CircuitBreakerRetryPolicy
and a
DefaultRetryState
.
Both of these classes can be configured using SpringRetryConfigBuilder
.
Default Configuration
要为所有熔断器提供默认配置,创建一个 Customizer
bean,它传递一个 SpringRetryCircuitBreakerFactory
。configureDefault
方法可用于提供默认配置。
To provide a default configuration for all of your circuit breakers create a Customizer
bean that is passed a
SpringRetryCircuitBreakerFactory
.
The configureDefault
method can be used to provide a default configuration.
@Bean
public Customizer<SpringRetryCircuitBreakerFactory> defaultCustomizer() {
return factory -> factory.configureDefault(id -> new SpringRetryConfigBuilder(id)
.retryPolicy(new TimeoutRetryPolicy()).build());
}
Specific Circuit Breaker Configuration
与提供默认配置类似,你可以创建一个 Customizer
bean,它传递一个 SpringRetryCircuitBreakerFactory
。
Similarly to providing a default configuration, you can create a Customizer
bean this is passed a
SpringRetryCircuitBreakerFactory
.
@Bean
public Customizer<SpringRetryCircuitBreakerFactory> slowCustomizer() {
return factory -> factory.configure(builder -> builder.retryPolicy(new SimpleRetryPolicy(1)).build(), "slow");
}
除了配置要创建的熔断器之外,你还可以自定义熔断器,使其在创建后但在返回给调用者之前执行。为此,你可以使用 addRetryTemplateCustomizers
方法。这对于向 RetryTemplate
添加事件处理很有用。
In addition to configuring the circuit breaker that is created you can also customize the circuit breaker after it has been created but before it is returned to the caller.
To do this you can use the addRetryTemplateCustomizers
method.
This can be useful for adding event handlers to the RetryTemplate
.
@Bean
public Customizer<SpringRetryCircuitBreakerFactory> slowCustomizer() {
return factory -> factory.addRetryTemplateCustomizers(retryTemplate -> retryTemplate.registerListener(new RetryListener() {
@Override
public <T, E extends Throwable> boolean open(RetryContext context, RetryCallback<T, E> callback) {
return false;
}
@Override
public <T, E extends Throwable> void close(RetryContext context, RetryCallback<T, E> callback, Throwable throwable) {
}
@Override
public <T, E extends Throwable> void onError(RetryContext context, RetryCallback<T, E> callback, Throwable throwable) {
}
}));
}