Apache camel 声明路由时重写HTTP客户端配置

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

我有一个web应用程序,我正在从中调用大约50-60个rest/SOAPAPI。为此,我在JavaDSL中创建了路由。现在,为了有默认的应用程序级超时设置,我进行了如下配置-

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");