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 fin
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());
}
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.