2015-04-21 1 views
1

Мы используем Feign на вершине ленты и Eureka.Feign/Ribbon/Eureka - RestClient при поддержке Apache HttpClient пул создан, но никогда не используется

Мы обнаружили, что экземпляр com.netflix.niws.client.http.RestClient создается автоматически для каждого клиента Feign, но никогда не использовался. Вместо этого Feign.Builder создает feign.ribbon.RibbonClient, который делегирует фактический HTTP-вызов экземпляру feign.Client.Default. Последний использует стандартный Java HttpConnection без какой-либо функции объединения.

К сожалению, создание этих, казалось бы бесполезных RestClient экземпляров (один за симулировать клиента) поставляется с собственным Apache HTTPClient, его собственный пул соединений, ведение домашнего хозяйства потоков и метрики вещи ...

Быстрый взгляд на/конечная точка метрики привода показывает такие показатели, как:

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 

Эти метрики создаваемого com.netflix.http4.NamedConnectionPool. Их ценность остается равной нулю.

У кого-то было такое же поведение? Почему эти RestClient экземпляров создаются для каждого клиента-клика и никогда не используются?

+0

Тем не менее, я заметил, что 'RestClient' используется, если я использую Spring' RestTemplate' для вызова удаленной службы вместо клиента Feign. Возможно ли, что RestClient всегда создается конфигурацией Ribbon, даже если он не используется каким-либо другим компонентом, например, когда используется Fign? –

+0

Это похоже на 'SpringLBClientFactory', используя ленту' SpringClientFactory'. Последний создает «RestClient», даже если это не требуется никаким другим компонентом. Может быть, фабричный метод должен быть отмечен '@ Lazy'? –

+0

Возможно, вам стоит открыть вопрос в github об этом (похоже, он должен уйти)? –

ответ

Смежные вопросы