Bulkhead 模式支持
如果类路径上有 resilience4j-bulkhead
,Spring Cloud CircuitBreaker 将使用 Resilience4j Bulkhead 包装所有方法。 你可以通过设置 spring.cloud.circuitbreaker.bulkhead.resilience4j.enabled
为 false
来禁用 Resilience4j Bulkhead。
Spring Cloud CircuitBreaker Resilience4j 提供了两种 Bulkhead 模式的实现
-
使用信号量的
SemaphoreBulkhead
-
使用有界队列和固定线程池的
FixedThreadPoolBulkhead
。
默认情况下,Spring Cloud CircuitBreaker Resilience4j 使用 FixedThreadPoolBulkhead
。 要修改默认行为以使用 SemaphoreBulkhead
,请将属性 spring.cloud.circuitbreaker.resilience4j.enableSemaphoreDefaultBulkhead
设置为 true
。
有关 Bulkhead 模式实现的更多信息,请参阅 Resilience4j Bulkhead。
Customizer<Resilience4jBulkheadProvider>
可用于提供默认的 Bulkhead
和 ThreadPoolBulkhead
配置。
@Bean
public Customizer<Resilience4jBulkheadProvider> defaultBulkheadCustomizer() {
return provider -> provider.configureDefault(id -> new Resilience4jBulkheadConfigurationBuilder()
.bulkheadConfig(BulkheadConfig.custom().maxConcurrentCalls(4).build())
.threadPoolBulkheadConfig(ThreadPoolBulkheadConfig.custom().coreThreadPoolSize(1).maxThreadPoolSize(1).build())
.build()
);
}