Java.net.HttpClient是否具有连接池处理功能?

6
我想使用Java 11的HttpClient,在HTTP 1.1的Keep-Alive参数的帮助下,向同一地址发送多个请求。我知道Apache HTTP Client有类似的功能,但是Java API的客户端是否也有这样的功能?
1个回答

2
是的 - HTTP/1.1连接默认情况下会保持活跃状态,除非超过了池的最大容量,此时池中最旧的空闲连接(距离过期日期最近的连接)将被关闭以为新连接腾出位置。但是,如果同时发出请求,则会打开多个到同一主机的连接。

2
感谢您的回答。如果您能够包含有关这些功能的(官方)文档链接,将有助于提高其质量并帮助他人。这也可能有助于发现如何配置和学习其他优化概念。 - GPI
如何配置池限制?在文档中没有找到答案。 - Ferdynand Kiepski
2
嗨Ferdynand:这是一个实现细节 - 因此没有“官方”文档。事实上,实际上并不存在“连接池”。HttpClient支持HTTP / 1.1和HTTP / 2,因此它有两个池 - 这些池由于每个协议的特定而被不同地处理。我上面的答案仅涉及HTTP / 1.1连接池。默认情况下,它是无界的,并且该池中的连接保持活动状态1200秒,除非由服务器端关闭。 - daniel
1
这个怎么样:https://github.com/openjdk/jdk/blob/c6da6681d418928c65cff6b1240e6b5d6bc5199b/src/java.net.http/share/classes/jdk/internal/net/http/ConnectionPool.java#L54-L57?所有属性似乎都在这里有文档记录:https://docs.oracle.com/en/java/javase/17/core/java-networking.html#GUID-E6C82625-7C02-4AB3-B15D-0DF8A249CD73 - pschichtel
1
这个基本上相同问题的答案已经很好地解决了:https://dev59.com/aLDla4cB1Zd3GeqP5UJt#53620696 - pschichtel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接