如何解决如何使 ThreadPoolBulkhead 以@FeignClient 的名称创建
我发现弹性 4 总是为每个 feign 方法创建一个线程池。我的项目中有数百种伪装方法。以至于有成千上万的隔板螺纹。
如何让它以@FeignClient 的名字创建线程池?
我从 org.springframework.cloud.circuitbreaker.resilience4j.Resilience4jBulkheadProvider
找到以下源代码:
// The id like this: FooStub#queryFooList(QueryFooListParam)-x
// I would it like this: xxx-service. It is the name property of @FeignClient
private <T> Supplier<CompletionStage<T>> decorateBulkhead(final String id,final Supplier<T> supplier) {
Resilience4jBulkheadConfigurationBuilder.BulkheadConfiguration configuration = configurations
.computeIfAbsent(id,defaultConfiguration);
if (bulkheadRegistry.find(id).isPresent() && !threadPoolBulkheadRegistry.find(id).isPresent()) {
Bulkhead bulkhead = bulkheadRegistry.bulkhead(id,configuration.getBulkheadConfig());
CompletableFuture<T> asyncCall = CompletableFuture.supplyAsync(supplier);
return Bulkhead.decorateCompletionStage(bulkhead,() -> asyncCall);
}
else {
ThreadPoolBulkhead threadPoolBulkhead = threadPoolBulkheadRegistry.bulkhead(id,configuration.getThreadPoolBulkheadConfig());
return threadPoolBulkhead.decorateSupplier(supplier);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。