>我有一个Web应用程序,我从中调用了大约50-60个rest/soap API。为此,我在JAVA DSL中创建了路由。现在,为了获得默认的应用程序级别超时设置,我已经完成了这样的配置-
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");
但是,似乎没有选择JAVA DSL中的直接配置。我哪里出错了?
将DefaultHttpClientConfig
添加到 Camel 注册表中,并使用 httpClientConfigurer
参数将其设置在路由上(Camel 文档(。
喜欢这个:
.to("http4://localhost:8089/mockcarrier/success?httpClientConfigurer=yourCustomConfigurerNameInTheRegistry");