特定隔離艙配置
與提供預設的 'Bulkhead' 或 'ThreadPoolBulkhead' 設定類似,您可以建立一個傳遞 Resilience4jBulkheadProvider
的 Customizer
Bean。
@Bean
public Customizer<Resilience4jBulkheadProvider> slowBulkheadProviderCustomizer() {
return provider -> provider.configure(builder -> builder
.bulkheadConfig(BulkheadConfig.custom().maxConcurrentCalls(1).build())
.threadPoolBulkheadConfig(ThreadPoolBulkheadConfig.ofDefaults()), "slowBulkhead");
}
除了設定建立的隔離艙之外,您也可以在隔離艙和執行緒池隔離艙建立之後但在傳回呼叫者之前,自訂它們。若要執行此操作,您可以使用 addBulkheadCustomizer
和 addThreadPoolBulkheadCustomizer
方法。
隔離艙範例
@Bean
public Customizer<Resilience4jBulkheadProvider> customizer() {
return provider -> provider.addBulkheadCustomizer(bulkhead -> bulkhead.getEventPublisher()
.onCallRejected(slowRejectedConsumer)
.onCallFinished(slowFinishedConsumer), "slowBulkhead");
}
執行緒池隔離艙範例
@Bean
public Customizer<Resilience4jBulkheadProvider> slowThreadPoolBulkheadCustomizer() {
return provider -> provider.addThreadPoolBulkheadCustomizer(threadPoolBulkhead -> threadPoolBulkhead.getEventPublisher()
.onCallRejected(slowThreadPoolRejectedConsumer)
.onCallFinished(slowThreadPoolFinishedConsumer), "slowThreadPoolBulkhead");
}