我在 Spring + RequestFactory 中看到的一个常见模式是在将 restTemplate 与所述 requestFactory 一起使用之前更改 Factory 上的参数。
使用 Spring5 和 apacheComponents4+
((HttpComponentsClientHttpRequestFactory) restTemplate.getRequestFactory())
.setReadTimeout(body.someValue? 500 : 2000 )
restTemplate.execute( ..., body );
还假设有许多并发线程发起请求,并且 HttpComponentsClientHttpRequestFactory
已将 ConnectionTimeToLive
设置为 10 seconds
。
当该代码遇到连接池时可以期待什么?
例如:
有一个空闲连接以 2_000 的 readTimeout 启动,另一个连接仍然活动,readTimeout 为 2_000。
现在该代码尝试启动一个 readTimeout 为 500 的新连接。
活动连接会受到影响吗?重用的连接会保持 2_000 的 readTimeout 还是设置为 500?经理会单独保留空闲连接并创建新连接吗?