Springs RestTemplate 默认连接池

新手上路,请多包涵

只是想知道开箱即用的 RestTemplate 是使用连接池还是每次都只是建立一个新连接?

原文由 Sam 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

I believe RestTemplate doesn’t use a connection pool to send requests, it uses a SimpleClientHttpRequestFactory that wraps a standard JDK ’s HttpURLConnection 打开和关闭连接。

事实上,您可以配置 RestTemplate 以使用诸如 HttpComponentsClientHttpRequestFactory 类的池化实现,但很可能您可能还需要配置一些设置以防止请求超时。

我已经在 Troubleshooting Spring’s RestTemplate Requests Timeout 上 写了关于这个问题的博客

原文由 ootero 发布,翻译遵循 CC BY-SA 3.0 许可协议

是的,Spring RestTemplateBuilder 使用 Apache HttpClient 进行池化( 用法)。 RestTemplateBuilder 创建 HttpComponentsClientHttpRequestFactory 并使用 HttpClientBuilder

HttpClientBuilder ,默认情况下,将每个路由(主机)的池大小设置为 5,总池大小设置为 10( 来源):

 s = System.getProperty("http.maxConnections", "5");
int max = Integer.parseInt(s);
poolingmgr.setDefaultMaxPerRoute(max);
poolingmgr.setMaxTotal(2 * max);


要检查连接池日志记录设置日志记录级别,如下所示:

 org.apache.http.impl.conn.PoolingHttpClientConnectionManager=TRACE

原文由 Volodymyr Kret 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏