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



>我有一个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");

最新更新