|
此版本仍在开发中,目前尚不被视为稳定版本。如需最新稳定版本,请使用 Spring-Cloud-CircuitBreaker 5.0.1! |
配置 Spring 重试断路器
Spring Retry 为 Spring 应用程序提供了声明式的重试支持。
该项目的一个子集包含实现断路器功能的能力。
Spring Retry 通过其 CircuitBreakerRetryPolicy 与一个 有状态重试 的组合,提供了一个断路器实现。
所有使用 Spring Retry 创建的断路器都将基于 CircuitBreakerRetryPolicy 和一个 DefaultRetryState 创建。
这两个类均可通过 SpringRetryConfigBuilder 进行配置。
默认配置
要为所有断路器提供默认配置,请创建一个 Customizer Bean,并将其传递一个 SpringRetryCircuitBreakerFactory。 configureDefault 方法可用于提供默认配置。
@Bean
public Customizer<SpringRetryCircuitBreakerFactory> defaultCustomizer() {
return factory -> factory.configureDefault(id -> new SpringRetryConfigBuilder(id)
.retryPolicy(new TimeoutRetryPolicy()).build());
}
特定的熔断器配置
类似于提供默认配置,您可以创建一个 Customizer Bean,该 Bean 接收一个 SpringRetryCircuitBreakerFactory。
@Bean
public Customizer<SpringRetryCircuitBreakerFactory> slowCustomizer() {
return factory -> factory.configure(builder -> builder.retryPolicy(new SimpleRetryPolicy(1)).build(), "slow");
}
除了配置所创建的断路器外,您还可以在断路器创建完成后、返回调用方之前对其进行自定义。为此,您可以使用 addRetryTemplateCustomizers 方法。这有助于为 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) {
}
}));
}