Bulkhead 模式支援

如果類路徑上有 resilience4j-bulkhead,Spring Cloud CircuitBreaker 將使用 Resilience4j Bulkhead 包裝所有方法。 你可以透過設定 spring.cloud.circuitbreaker.bulkhead.resilience4j.enabledfalse 來停用 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> 可用於提供預設的 BulkheadThreadPoolBulkhead 配置。

@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()
);
}