spring-cloud-openfeign
spring-cloud-openfeign copied to clipboard
Default http client (Client.Default) seems not taking 'spring.cloud.openfeign.httpclient' properties when creating feign client with FeignClientBuilder
I'm creating feign clients using method FeignClientBuilder(context)
. I'm trying to check the effect of "maxConnections" and "maxConnectionsPerRoute" properties from "spring.cloud.openfeign.httpclient" it seems they are not applied.
I'm applying the properties:
spring:
cloud:
openfeign:
httpclient:
max-connections: 1
max-connections-per-route: 1
I'm using spring-cloud-openfeign version 4.0.3
A sample of how I create the feign client:
private val target = FeignClientBuilder(context)
.forType(PhoneMaskingServiceFeignClientExtension::class.java, PHONEMASKINGSERVICE)
.url(phoneMaskingServiceConfig.url)
.customize {
it
.encoder(GsonEncoder())
.decoder(gsonDecoder)
.requestInterceptors(RequestInterceptors.create())
.requestInterceptor(OpenApiInterceptor())
.requestInterceptor(HeadersInterceptor(headersConfig.getForwardingHeaders()))
.requestInterceptor(
BasicAuthRequestInterceptor(
phoneMaskingServiceConfig.api.user,
phoneMaskingServiceConfig.api.password
)
)
}.build()
However when I force the client to be ApacheHttpClient one and I manually apply the mentioned properties it works as expected and when applying load testing the execution produces timeouts
private val target = FeignClientBuilder(context)
.forType(PhoneMaskingServiceFeignClientExtension::class.java, PHONEMASKINGSERVICE)
.url(phoneMaskingServiceConfig.url)
.customize {
it
.encoder(GsonEncoder())
.decoder(gsonDecoder)
.client(
ApacheHttpClient(
HttpClientBuilder.create()
.setMaxConnPerRoute(1)
.setMaxConnTotal(1)
.build()
)
)
.requestInterceptors(RequestInterceptors.create())
.requestInterceptor(OpenApiInterceptor())
.requestInterceptor(HeadersInterceptor(headersConfig.getForwardingHeaders()))
.requestInterceptor(
BasicAuthRequestInterceptor(
phoneMaskingServiceConfig.api.user,
phoneMaskingServiceConfig.api.password
)
)
}.build()
So is there anything wrong in my setup? How can I achieve httpclient props max-connections and max-connections-per-route from "spring.cloud.openfeign.httpclient" are properly applied when using FeignClientBuilder
? Is FeignClientBuilder
applying "spring.cloud.openfeign.httpclient" properties for the default http client?
Thanks in advance