Apache camel 声明路由时重写HTTP客户端配置
我有一个web应用程序,我正在从中调用大约50-60个rest/SOAPAPI。为此,我在JavaDSL中创建了路由。现在,为了有默认的应用程序级超时设置,我进行了如下配置-Apache camel 声明路由时重写HTTP客户端配置,apache-camel,apache-httpclient-4.x,Apache Camel,Apache Httpclient 4.x,我有一个web应用程序,我正在从中调用大约50-60个rest/SOAPAPI。为此,我在JavaDSL中创建了路由。现在,为了有默认的应用程序级超时设置,我进行了如下配置- public class DefaultHttpClientConfig implements HttpClientConfigurer { // http4 @Override public void configureHttpClient(HttpClientBuilder clientBuild
public class DefaultHttpClientConfig implements HttpClientConfigurer { // http4
@Override
public void configureHttpClient(HttpClientBuilder clientBuilder) {
clientBuilder.setDefaultRequestConfig(
RequestConfig.custom()
.setConnectTimeout(1000)
.setSocketTimeout(1000).build());
}
}
static CamelContext ctx = new DefaultCamelContext();
static {
try {
HttpComponent httpComponent = ctx.getComponent("http4", HttpComponent.class);
httpComponent.setConnectionTimeToLive(10);
httpComponent.setHttpClientConfigurer(new DefaultHttpClientConfig());
ctx.addRoutes(new DirectRestRouteBuilder());
ctx.start();
} catch (Exception e) {
e.printStackTrace();
}
}
我把它放在骆驼的背景下,就像这样-
public class DefaultHttpClientConfig implements HttpClientConfigurer { // http4
@Override
public void configureHttpClient(HttpClientBuilder clientBuilder) {
clientBuilder.setDefaultRequestConfig(
RequestConfig.custom()
.setConnectTimeout(1000)
.setSocketTimeout(1000).build());
}
}
static CamelContext ctx = new DefaultCamelContext();
static {
try {
HttpComponent httpComponent = ctx.getComponent("http4", HttpComponent.class);
httpComponent.setConnectionTimeToLive(10);
httpComponent.setHttpClientConfigurer(new DefaultHttpClientConfig());
ctx.addRoutes(new DirectRestRouteBuilder());
ctx.start();
} catch (Exception e) {
e.printStackTrace();
}
}
现在,当创建单个路由时,我想覆盖这些配置,因此我尝试如下所示-
from("direct:success")
.to("http4://localhost:8089/mockcarrier/success?httpClient.socketTimeout=8000");
然而,JavaDSL中的直接配置似乎没有被接受。哪里出错了?将
DefaultHttpClientConfig
添加到Camel注册表,并使用httpClientConfigurer
参数()在路由上设置它
像这样:
.to("http4://localhost:8089/mockcarrier/success?httpClientConfigurer=yourCustomConfigurerNameInTheRegistry");