Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to disable connection pooling in Webclient in new Springboot 2.1.4.Release?

I am using springboot webclient to call rest api from remote server. First request works fine. If I made subsequent request after sometime, the server throws 500 server error. The error I got is " onError(java.io.IOException: An existing connection was forcibly closed by the remote host)".

I want to test the behavior with disabling connection pool since I believe it uses the previous connection. Can you help me how to disable the connection pool when creating webclient?

TcpClient tcpClient = TcpClient.create()
        .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 30000)
        .option(ChannelOption.SO_KEEPALIVE, false)
        .doOnConnected(connection ->
                connection.addHandlerLast(new ReadTimeoutHandler(30))
                        .addHandlerLast(new WriteTimeoutHandler(30))
        );

ReactorClientHttpConnector httpConnector = new ReactorClientHttpConnector(HttpClient.from(tcpClient));

final WebClient webClient = WebClient
        .builder()
        .clientConnector(httpConnector)
        .baseUrl("http://customer.service.api.internal.cloud.qa.intranet.pagseguro.uol")
        .exchangeStrategies(strategies)
        .build()
like image 723
Viswa Avatar asked Apr 10 '19 16:04

Viswa


1 Answers

You can disable the connection pooling using the code below

TcpClient tcpClient = TcpClient.newConnection()

Use wiretap(true) to inspect the traffic between the server and the client.

You can also enable the logging for Reactor Netty and trace whether the connection is reused (in the connection pool scenario)

logging.level.reactor.netty=debug

If the connection is reused you will see

2019-04-11 18:52:10.049 DEBUG 98105 --- [ctor-http-nio-5] r.n.resources.PooledConnectionProvider   : [id: 0x897584fa, L:/<IP>:<PORT> - R:/<IP>:<PORT>] Channel acquired, now 1 active connections and 0 inactive connections

Also using the channel id id: 0x897584fa you can track what's happening with the channel.

like image 111
Violeta Georgieva Avatar answered Oct 16 '22 20:10

Violeta Georgieva