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

隔板模式支持

如果resilience4j-bulkhead在 Classpath 上,Spring Cloud CircuitBreaker 将使用Resilience4j Bulkhead包装所有方法。 您可以通过设置spring.cloud.circuitbreaker.bulkhead.resilience4j.enabledfalse.spring-doc.cadn.net.cn

Spring Cloud CircuitBreaker Resilience4j 提供了两种隔板模式的实现:spring-doc.cadn.net.cn

默认情况下,Spring Cloud CircuitBreaker Resilience4j 使用FixedThreadPoolBulkhead.要修改要使用的默认行为SemaphoreBulkhead设置spring.cloud.circuitbreaker.resilience4j.enableSemaphoreDefaultBulkheadtrue.spring-doc.cadn.net.cn

有关实施的更多信息 的 Bulkhead 模式请参阅 Resilience4j Bulkheadspring-doc.cadn.net.cn

Customizer<Resilience4jBulkheadProvider>可用于提供默认的BulkheadThreadPoolBulkhead配置。spring-doc.cadn.net.cn

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

反应式隔板模式支持

如果你在 Spring Cloud CircuitBreaker 中使用反应式编程,则可以利用ReactiveResilience4jBulkheadProvider以支持反应式管道中的 Bulkhead 模式。 此提供程序装饰MonoFlux实例来确保在反应式作期间应用 bulkhead 约束。spring-doc.cadn.net.cn

Spring Cloud CircuitBreaker Resilience4j 反应式支持仅使用SemaphoreBulkhead. 如果属性spring.cloud.circuitbreaker.resilience4j.enableSemaphoreDefaultBulkhead设置为false,将记录警告,并且ReactiveResilience4jBulkheadProvider仍将使用SemaphoreBulkhead.spring-doc.cadn.net.cn

配置 Reactive Bulkhead

ReactiveResilience4jBulkheadProvider可以使用Customizerbean,如下所示:spring-doc.cadn.net.cn

@Bean
public Customizer<ReactiveResilience4jBulkheadProvider> reactiveBulkheadCustomizer() {
    return provider -> provider.configureDefault(id -> new Resilience4jBulkheadConfigurationBuilder()
        .bulkheadConfig(BulkheadConfig.custom().maxConcurrentCalls(4).build())
        .build());
}

您还可以为特定使用案例添加单独的隔舱配置:spring-doc.cadn.net.cn

@Bean
public Customizer<ReactiveResilience4jBulkheadProvider> reactiveSpecificBulkheadCustomizer() {
    return provider -> provider.configure(builder -> {
        builder.bulkheadConfig(BulkheadConfig.custom()
            .maxConcurrentCalls(2)
            .build());
    }, "serviceBulkhead");
}

有关更多详细信息,请参阅 Resilience4j 反应式隔舱示例spring-doc.cadn.net.cn