バルクヘッドパターン対応
resilience4j-bulkhead
がクラスパス上にある場合、Spring Cloud CircuitBreaker はすべてのメソッドを Resilience4j Bulkhead でラップします。spring.cloud.circuitbreaker.bulkhead.resilience4j.enabled
を false
に設定することで、Resilience4j Bulkhead を無効にできます。
Spring Cloud CircuitBreaker Resilience4j は、バルクヘッドパターンの 2 つの実装を提供します。
セマフォを使用する
SemaphoreBulkhead
制限付きキューと固定スレッドプールを使用する
FixedThreadPoolBulkhead
。
デフォルトでは、Spring Cloud CircuitBreaker Resilience4j は FixedThreadPoolBulkhead
を使用します。SemaphoreBulkhead
を使用するようにデフォルトの動作を変更するには、プロパティ spring.cloud.circuitbreaker.resilience4j.enableSemaphoreDefaultBulkhead
を true
に設定します。
バルクヘッドパターンの実装の詳細については、Resilience4j バルクヘッド (英語) を参照してください。
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()
);
}