gpt4 book ai didi

spring - 为 Spring Web RestTemplate 设置 Apache HttpComponents PoolingClientConnectionManager

转载 作者:行者123 更新时间:2023-12-02 23:54:35 27 4
gpt4 key购买 nike

我正在使用 RestClient 连接到远程 JSON API。之前,在 Spring 3.0 中,我使用的是 Commons HTTPClient。我发现由于旧的多线程连接管理器中存在大量锁定,性能很低。

我现在想尝试 Apache HttpComponents 4.2,因为它们似乎修复了锁定问题。我想使用 PoolingClientConnectionManager 作为 DefaultHttpClient 的构造函数参数,该参数将为不同的类 Autowiring 。

挑战在于设置PoolingClientConnectionManager连接管理器。我想要与 JSON API 提供程序的大量并发连接。它们使用 HttpRoute 对象来表示主机名。但是,正如 http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/conn/PoolingClientConnectionManager.html 中所述,PoolingClientConnectionManager 使用 setMaxPerRoute(HttpRoute, int maxConnections) 方法。

由于 Spring context.xml 文件不使用简单的 setter ,因此如何设置连接管理器?

最佳答案

如何通过扩展 PoolingClientConnectionManager 来包装它,然后使用表示路由/最大值的 Bean 创建 setter。即。

// Your bean
public class RouteMax() {
private HttpRoute httpRoute;
private int max;
... setters/getters
}

// Extending the PoolingClientConnectionManager
...
public class CustomPoolingClientConnectionManager extends PoolingClientConnectionManager {
...
public setRouteMax(RouteMax routeMax) {
super.setMaxPerRoute(routeMax.getHttpRoute(), routeMax.getMax());
}

..然后在 Spring 配置中,您可以使用 RouteMax bean 设置 RouteMax 属性。

关于spring - 为 Spring Web RestTemplate 设置 Apache HttpComponents PoolingClientConnectionManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11272456/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com