Open jjoslet opened 1 year ago
Is someone working on it . I would like to contribute on this , but I would request if I can get little more overview on this .
Thanks for the offer, @ramanpopli. If you’d like to work on an issue where we provide some guidance, please watch for one labelled as ideal for contribution or, if you haven’t contributed before, first-timers only.
If we would make the org.springframework.boot.autoconfigure.web.reactive.function.client.ReactorClientHttpConnectorFactory.SslConfigurer
public API and add a static method to it:
public static HttpClient applyBundle(SslBundle sslBundle, HttpClient httpClient) {
return new SslConfigurer(sslBundle).configure(httpClient);
}
then we could workaround that problem with:
HttpClient httpClient = HttpClient.create().option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 1);
httpClient = SslConfigurer.applyBundle(sslBundles.getBundle("demobundle"), httpClient); // SSL
WebClient webClient = builder
.clientConnector(new ReactorClientHttpConnector(httpClient)) // TIMEOUT
.build();
(SslBundles
can be injected, too)
any updates here?
No.
okay.. we have found a workaround/solution maybe maybe this can be verified if this would be a proper way to configure it?
@Bean
ReactorNettyHttpClientMapper reactorNettyHttpClientMapper() {
return httpClient -> httpClient
.responseTimeout(webClientProperties.http.responseTimeoutInMs)
.option(CONNECT_TIMEOUT_MILLIS, (int) webClientProperties.http.connectTimeoutInMs.toMillis());
}
but i'm not sure if this fits all purposes as this is "globally" then and will also affect nonssl webclients as well
okay.. we have found a workaround/solution maybe maybe this can be verified if this would be a proper way to configure it?
@Bean ReactorNettyHttpClientMapper reactorNettyHttpClientMapper() { return httpClient -> httpClient .responseTimeout(webClientProperties.http.responseTimeoutInMs) .option(CONNECT_TIMEOUT_MILLIS, (int) webClientProperties.http.connectTimeoutInMs.toMillis()); }
but i'm not sure if this fits all purposes as this is "globally" then and will also affect nonssl webclients as well
You're right in that this would be global, affecting all auto-configured WebClient.Builder
s. I'm in a similar situation to OP in that I have a specific WebClient
that I want to apply WebClientSsl
to and configure it to use a proxy server.
In my application I have several other services I need to call and the corresponding WebClient
instances need to be configured without proxy, so a global configuration via ReactorNettyHttpClientMapper
doesn't work for me...
I followed the Spring Boot and Spring Framework documentations to configure a WebClient with Spring Boot 3.1.1.
I have
These configurations are incompatible since they both set the
ClientHttpConnector
on theWebClient.Builder
; the second configuration overrides the first one.Here is a small application to reproduce:
with the following properties:
In that situation, a timeout does not occur but if I switch
// TIMEOUT
with// SSL
lines, a timeout will occur but SSL is no more configured.I didn't find a proper way to configure this without recreating the full SSL configuration in my application.