跳到主要内容

配置 Spring Retry 熔断器

DeepSeek V3 中英对照 Configuring Spring Retry Circuit Breakers

Spring Retry 为 Spring 应用程序提供了声明式的重试支持。该项目的一个子集包括实现断路器功能的能力。Spring Retry 通过结合其 CircuitBreakerRetryPolicy有状态重试 来提供断路器实现。所有使用 Spring Retry 创建的断路器都将使用 CircuitBreakerRetryPolicyDefaultRetryState 创建。这两个类都可以使用 SpringRetryConfigBuilder 进行配置。

默认配置

要为所有断路器提供默认配置,可以创建一个 Customizer bean,并将其传递给 SpringRetryCircuitBreakerFactory。可以使用 configureDefault 方法来提供默认配置。

@Bean
public Customizer<SpringRetryCircuitBreakerFactory> defaultCustomizer() {
return factory -> factory.configureDefault(id -> new SpringRetryConfigBuilder(id)
.retryPolicy(new TimeoutRetryPolicy()).build());
}
java

特定断路器配置

与提供默认配置类似,您可以创建一个 Customizer bean,该 bean 会接收一个 SpringRetryCircuitBreakerFactory

@Bean
public Customizer<SpringRetryCircuitBreakerFactory> slowCustomizer() {
return factory -> factory.configure(builder -> builder.retryPolicy(new SimpleRetryPolicy(1)).build(), "slow");
}
java

除了配置创建的断路器外,您还可以在断路器创建之后但返回给调用者之前对其进行自定义。为此,您可以使用 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) {

}
}));
}
java