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

特定断路器配置

类似于提供默认配置,你可以创建定制器豆子,这是传递给韧性4JCircuitBreakerFactory。ReactiveResilience4JCircuitBreakerFactory.spring-doc.cadn.net.cn

@Bean
public Customizer<Resilience4JCircuitBreakerFactory> slowCustomizer() {
	return factory -> factory.configure(builder -> builder.circuitBreakerConfig(CircuitBreakerConfig.ofDefaults())
			.timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(2)).build()), "slow");
}

除了配置已创建的断路器外,你还可以在断路器创建后、返回给呼叫者之前自定义该断路器。 为此你可以使用addCircuitBreakerCustomizer方法。 这对于向Resilience4J断路器添加事件处理程序非常有用。spring-doc.cadn.net.cn

@Bean
public Customizer<Resilience4JCircuitBreakerFactory> slowCustomizer() {
	return factory -> factory.addCircuitBreakerCustomizer(circuitBreaker -> circuitBreaker.getEventPublisher()
	.onError(normalFluxErrorConsumer).onSuccess(normalFluxSuccessConsumer), "normalflux");
}

如果你需要将安全上下文传递到断路器,你必须配置断路器为使用DelegatingSecurityContextExecutorService.spring-doc.cadn.net.cn

@Bean
public Customizer<Resilience4JCircuitBreakerFactory> groupExecutorServiceCustomizer() {
	return factory -> factory.configureGroupExecutorService(group -> new DelegatingSecurityContextExecutorService(Executors.newVirtualThreadPerTaskExecutor()));
}

响应式示例

@Bean
public Customizer<ReactiveResilience4JCircuitBreakerFactory> slowCustomizer() {
	return factory -> {
		factory.configure(builder -> builder
		.timeLimiterConfig(TimeLimiterConfig.custom().timeoutDuration(Duration.ofSeconds(2)).build())
		.circuitBreakerConfig(CircuitBreakerConfig.ofDefaults()), "slow", "slowflux");
		factory.addCircuitBreakerCustomizer(circuitBreaker -> circuitBreaker.getEventPublisher()
        	.onError(normalFluxErrorConsumer).onSuccess(normalFluxSuccessConsumer), "normalflux");
     };
}