Spring integration Spring集成HTTPOutboundGateway::连接池和connectionTimeout、soTimeout、maxTotalConnections
我们正在将基于mule的应用程序转换为spring,在我们使用mule HttpsConnector使用第三方服务的现有代码中,我们希望使用spring Http出站网关做同样的事情。。 org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler 这里我的问题是,, 如何启用HTTP连接池? 如何设置connectionTimeout、soTimeout、maxTotalConnections等道具 这就是我试图做的,但是这里我们不能在requestFactory中注入org.apache.commons.httpclient.httpclientSpring integration Spring集成HTTPOutboundGateway::连接池和connectionTimeout、soTimeout、maxTotalConnections,spring-integration,Spring Integration,我们正在将基于mule的应用程序转换为spring,在我们使用mule HttpsConnector使用第三方服务的现有代码中,我们希望使用spring Http出站网关做同样的事情。。 org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler 这里我的问题是,, 如何启用HTTP连接池? 如何设置connectionTimeout、soTimeout、maxTotalConnections等
Spring集成
HttpRequestExecutingMessageHandler
提供了setRequestFactory()
注入选项。然后,您可以选择任何方便的clienthttpprequestfactory
实现,例如httpcomponents客户端httprequestfactory
:
* {@link org.springframework.http.client.ClientHttpRequestFactory} implementation that
* uses <a href="http://hc.apache.org/httpcomponents-client-ga/">Apache HttpComponents
* HttpClient</a> to create requests.
*
* <p>Allows to use a pre-configured {@link HttpClient} instance -
* potentially with authentication, HTTP connection pooling, etc.
*
* <p><b>NOTE:</b> Requires Apache HttpComponents 4.3 or higher, as of Spring 4.0.
然后,这个bean可以被
restemplate
或Http.outboundGateway
使用,但它有一个HttpClient
要注入
@Bean
public ClientHttpRequestFactory createRequestFactory()
{
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setMaxTotal(10);
connectionManager.setDefaultMaxPerRoute(5);
RequestConfig config =
RequestConfig.custom()
.setConnectTimeout(100000)
.setConnectionRequestTimeout(1000)
.build();
CloseableHttpClient httpClient =
HttpClientBuilder.create()
.setConnectionManager(connectionManager)
.setDefaultRequestConfig(config).build();
return new HttpComponentsClientHttpRequestFactory(httpClient);
}