在声明路由时覆盖HTTP客户端配置

时间:2017-03-20 03:30:03

标签: apache-camel apache-httpclient-4.x

我有一个网络应用程序,我打电话约50-60个休息/肥皂apis。为此,我在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中的直接配置。我哪里错了?

1 个答案:

答案 0 :(得分:0)

DefaultHttpClientConfig添加到Camel注册表并使用httpClientConfigurer参数(enter image description here)在路线上设置。

像这样:

.to("http4://localhost:8089/mockcarrier/success?httpClientConfigurer=yourCustomConfigurerNameInTheRegistry");