- 如何使用 HttpClient 创建连接池?
- 我必须经常连接到同一台服务器。值得创建这样一个池吗?
- 是否可以使 HTTP 连接保持活动状态并将它们用于各种请求,如果可以,我该怎么做?
原文由 John 发布,翻译遵循 CC BY-SA 4.0 许可协议
原文由 John 发布,翻译遵循 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 许可协议
15 回答8.2k 阅读
8 回答5.9k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.2k 阅读✓ 已解决
[假设 Java 和 Apache 的 HttpClient]
使用 ThreadSafeClientConnManager 。将单个全局实例传递给每个 HttpClient 实例的构造函数。我认为将 HttpClient 本身集中在一起没有任何意义。