该版本仍在开发中,尚未被视为稳定。对于最新稳定版本,请使用 Spring-Cloud-CircuitBreaker 5.0.0spring-doc.cadn.net.cn

配置Spring重试断路器

Spring Retry 为 Spring 应用提供声明式重试支持。 项目的一部分包括实现断路器功能的能力。 Spring Retry 通过其CircuitBreakerRetry策略以及一次有状态的重审。 所有使用春季重试创建的断路器都将通过CircuitBreakerRetry策略以及一个默认重试状态. 这两个类别都可以配置为SpringRetryConfigBuilder.spring-doc.cadn.net.cn

默认配置

为了为所有断路器提供默认配置,请创建一个定制器传递给 a 的豆子春季再试断路器工厂. 这configureDefault可以用来提供默认配置。spring-doc.cadn.net.cn

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

特定断路器配置

类似于提供默认配置,你可以创建定制器豆子,这是传递给春季再试断路器工厂.spring-doc.cadn.net.cn

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

除了配置已创建的断路器外,你还可以在断路器创建后、返回给呼叫者之前自定义该断路器。 为此你可以使用addRetryTemplateCustomizers方法。 这对于向重试模板.spring-doc.cadn.net.cn

@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) {

		}
	}));
}