WebClient maxConnection pool limit?

membersound picture membersound · Aug 27, 2019 · Viewed 7.4k times · Source

How many concurrent requests can I send if the remote service if blocking? Means: what is the maxConnection pool limit that spring uses internally when using WebClient?

@Autowired
private WebClient webClient;

webClient.post().uri(url).syncBody(req).retrieve().bodyToMono(type);

And moreover: how can I modify it?

Answer

Alexander Pankin picture Alexander Pankin · Aug 28, 2019

Before reactor-netty 0.9.0.M4 version there wasn't limit by default because of "elastic" connection provider was used. This fix changed it to "fixed" connection provider with the limit of 500.

To change the connection pool limit you could define your own WebClient.Builder bean and use it to create WebClient

@Bean
public WebClient.Builder webClientBuilder() {
    String connectionProviderName = "myConnectionProvider";
    int maxConnections = 100;
    int acquireTimeout = 1000;
    HttpClient httpClient = HttpClient.create(ConnectionProvider
            .fixed(connectionProviderName, maxConnections, acquireTimeout));
    return WebClient.builder()
            .clientConnector(new ReactorClientHttpConnector(httpClient));
}

Or you could implement custom org.springframework.boot.web.reactive.function.client.WebClientCustomizer in the same manner with the predefined WebClient.Builder