Spring cloud Feign/Ribbon/Eureka—创建了一个由Apache HttpClient池支持的RestClient,但从未使用过

Spring cloud Feign/Ribbon/Eureka—创建了一个由Apache HttpClient池支持的RestClient,但从未使用过,spring-cloud,netflix-feign,Spring Cloud,Netflix Feign,我们在Ribbon和Eureka的顶部使用了Faign 我们注意到,会为每个外部客户端自动创建一个com.netflix.niws.client.http.RestClient实例,但从未使用过。相反,Feign.Builder创建一个Feign.ribbon.RibbonClient,将实际的HTTP调用委托给Feign.Client.Default实例。后者使用标准JavaHttpConnection,没有任何池功能 不幸的是,创建这些显然毫无用处的RestClient实例(每个外国客户机一

我们在Ribbon和Eureka的顶部使用了Faign

我们注意到,会为每个外部客户端自动创建一个
com.netflix.niws.client.http.RestClient
实例,但从未使用过。相反,
Feign.Builder
创建一个
Feign.ribbon.RibbonClient
,将实际的HTTP调用委托给
Feign.Client.Default
实例。后者使用标准JavaHttpConnection,没有任何池功能

不幸的是,创建这些显然毫无用处的
RestClient
实例(每个外国客户机一个)时附带了自己的ApacheHttpClient、自己的连接池、内务线程和度量工具

快速查看/metrics执行器端点可显示如下指标:

counter.servo.<client name>_createnew: 0
counter.servo.<client name>_delete: 0
counter.servo.<client name>_release: 0
counter.servo.<client name>_request: 0
counter.servo.<client name>_reuse: 0
counter.servo.\u createnew:0
计数器。伺服。\u删除:0
计数器。伺服。_释放:0
计数器。伺服。\u请求:0
计数器。伺服。\ u重用:0
这些指标由
com.netflix.http4.NamedConnectionPool
创建。无论活动是什么,它们的值都保持为0

有没有人经历过同样的行为?
为什么这些
RestClient
实例是为每个外国客户机创建的,并且从未使用过?

观察到的行为是由问题引起的。
计划在SpringCloud1.0.2中包含修复程序,但是,我注意到如果我使用Spring
RestTemplate
来调用远程服务,而不是调用外部客户端,则会使用
RestClient
。RestClient是否可能总是由Ribbon配置创建的,即使它没有被任何其他组件使用,比如在使用Feign时?这似乎是因为
SpringLBClientFactory
使用Ribbon的
SpringClientFactory
。后者创建一个
RestClient
,即使任何其他bean都不需要它。可能是工厂方法应该标记为
@Lazy
?也许您应该在github中打开一个关于此的问题(似乎它应该消失)?在github中创建的问题: