2017-03-20 2 views
0

私は約50-60 rest/soap apisを呼び出すWebアプリケーションを持っています。このために、私はJAVA DSLでルートを作成しました。さて、デフォルトのアプリケーションレベルのタイムアウト設定を持つことが、私がやったthis-ルートの宣言時にHTTPクライアントの設定を無効にする

public class DefaultHttpClientConfig implements HttpClientConfigurer { // http4 
    @Override 
    public void configureHttpClient(HttpClientBuilder clientBuilder) { 
      clientBuilder.setDefaultRequestConfig( 
          RequestConfig.custom() 
            .setConnectTimeout(1000) 
            .setSocketTimeout(1000).build()); 
    } 
} 

のような構成と私は今、個々のルートを作成するときthis-

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

below-示すように、私はこれをしようとしているしかし、JAVA DSLで直接設定をピックアップされていないようです。どこが間違っていますか?

答えて

0

DefaultHttpClientConfigをCamelレジストリに追加し、httpClientConfigurerパラメータ(Camel documentation)のルートに設定します。このよう

.to("http4://localhost:8089/mockcarrier/success?httpClientConfigurer=yourCustomConfigurerNameInTheRegistry"); 
関連する問題