使用 HttpClient 在 Java 中建立连接池

新手上路,请多包涵
  • 如何使用 HttpClient 创建连接池?
  • 我必须经常连接到同一台服务器。值得创建这样一个池吗?
  • 是否可以使 HTTP 连接保持活动状态并将它们用于各种请求,如果可以,我该怎么做?

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

阅读 1.1k
2 个回答

[假设 Java 和 Apache 的 HttpClient]

使用 ThreadSafeClientConnManager 。将单个全局实例传递给每个 HttpClient 实例的构造函数。我认为将 HttpClient 本身集中在一起没有任何意义。

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

我最近几天一直在研究这个,所以只想与您分享一些“众所周知”的知识。

首先,由于您正在处理同一台服务器,建议使用单个 HTTP 客户端来执行您的请求。在 PoolingHttpClientConnectionManager 的帮助下,您的客户端可用于同时执行多个请求。多线程请求执行的官方示例可以在 这里 找到。

其次,HTTP/1.1(以及 HTTP/1.0 的增强版本)允许 HTTP 客户端在事务完成后保持连接打开,以便它可以被重新用于未来的请求。这通常称为 持久连接

同样为了对多个请求重用客户端,来自服务器的响应标头通常包含一个属性调用 Keep-Alive 包含当前连接将保持活动的时间。除此之外,Apache Http Client 还为您提供了一个接口 ConnectionKeepAliveStrategy 来自定义您自己的重用连接策略。

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

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