Bulkhead 模式支援
如果 classpath 中有 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()
);
}