Can anyone please tell me if the Spring Cloud Feign Client provides or supports Http Connection Pooling, and if so how to configure settings like pool size? I can't seem to find this in the official documentation. Thank you.
Spring Cloud: Feign and Http Connection Pooling
Asked Answered
From investigation I will try to answer my own question:
Spring Cloud Feign uses Netflix Feign. Netflix Feign in turn creates connections using java.net.HttpURLConnection which makes use of 'persistent connections' but not a connection pool.
It is possible to override the Client, for example using Apache HttpClient instead, and Netflix provide a library for this (feign-httpclient). When using this approach the connection pool size can be set using SystemProperties.
In Spring Cloud Brixton it seems that if Apache HttpClient or OkHttpClient are available (via @ConditionalOnClass) then they are automatically used.
Are you sure about Spring Cloud will use Apache HttpClient automatically when it's in classpath? –
Prankster
You need to add io.github.openfeign:feign-httpclient, not a just apache http client –
Neom
This is an example.
@Bean
public ServiceXFeignClient serviceXClient(Encoder encoder, Decoder decoder,
Contract contract, ClientProperties properties, ProxyProperties proxyProperties) {
OkHttpClient.Builder okHttpClient = new OkHttpClient.Builder()
.connectionPool(
new ConnectionPool(properties.getPoolConnectionMaxIdle(),
properties.getPoolConnectionKeepMinutesAlive(), TimeUnit.MINUTES))
.build();
return Feign.builder()
.client(new feign.okhttp.OkHttpClient(okHttpClient))
.encoder(encoder)
.decoder(decoder)
.contract(contract)
.target(ServiceXFeignClient.class, properties.getUrl());
}
© 2022 - 2024 — McMap. All rights reserved.