2016-07-18 13 views
1

camel http4コンポーネントのmaxTotalConnectionsconnectionsPerRouteを青写真を使用して変更します。camel http4コンポーネントのデフォルトプロパティを青写真を使用してオーバーライド

これを行うことができますか、これをURIオプションとして送信する必要があることを私に教えてもらえますか?

私はラクダラクダがあなたsetup routes using OSGi Blueprintを聞かせん2.16.3

答えて

1

にしています。また、Property Placeholders with Blueprint valuesを使用することもできます。しかし、それらの値をURIに配置する必要があります。最初のルートは、そのコンポーネントを使用して作成されたときに

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> 
    <cm:property-placeholder persistent-id="my-placeholders" update-strategy="reload"> 
     <cm:default-properties> 
      <cm:property name="maxTotalConnections" value="200"/> 
      <cm:property name="connectionsPerRoute" value="20"/> 
     </cm:default-properties> 
    </cm:property-placeholder> 

    <camelContext xmlns="http://camel.apache.org/schema/blueprint"> 
     <route> 
      <from uri="timer:test" /> 
      <to uri="http4:localhost:80/resource?maxTotalConnections={{maxTotalConnections}}&amp;connectionsPerRoute={{connectionsPerRoute}}" /> 
     </route> 
    </camelContext> 

</blueprint> 

コンポーネントオプションが設定されています

だから、あなたのようなものを使用することができます。そのようなときcreating a new endpointコードで見ると、maxTotalConnectionsとconnectionsPerRouteが設定されている:最初のルートが設定されたら

HttpClientConnectionManager localConnectionManager = clientConnectionManager; 
if (localConnectionManager == null) { 
    // need to check the parameters of maxTotalConnections and connectionsPerRoute 
    int maxTotalConnections = getAndRemoveParameter(parameters, "maxTotalConnections", int.class, 0); 
    int connectionsPerRoute = getAndRemoveParameter(parameters, "connectionsPerRoute", int.class, 0); 
    localConnectionManager = createConnectionManager(createConnectionRegistry(x509HostnameVerifier, sslContextParameters), maxTotalConnections, connectionsPerRoute); 
} 

は、clientConnectionManagerが設定されています。 ClientConnectionManagerがHttp4コンポーネントの単一インスタンスに結びついているため、最初のパスの後に設定された他のルートでは、これらのオプションは無視されるように見えます。すべてのルートで同じコンポーネントオプションを使用します。

新しいHTTP4コンポーネントをインスタンス化するには、新しいbeanを作成してIDを与えます。これを使用して、さまざまなコンポーネントオプションを持つ複数のhttp4コンポーネントを作成できます。

<bean id="http4-foo" class="org.apache.camel.component.http4.HttpComponent"/> 
<bean id="http4-bar" class="org.apache.camel.component.http4.HttpComponent"/> 

次に、エンドポイントを設定するときにこれらのIDを使用してください。

<to uri="http4-foo:localhost:80/resource?maxTotalConnections=300"/> 
+0

「connectionsPerHost」とは何ですか?私は文書でそれを見つけられませんでした。あなたは 'maxTotalConnections'を意味しますか? – tuk

+0

オオプス、それはちょうど間違いだった。修正されました。 – AndyN

+0

ラクダに複数のルートがある場合は、回答に示されているように、すべてのルートに対して 'maxTotalConnections'を設定する必要がありますか?もしそうなら、あるルートで 'maxTotalConnection'を' x'に、あるルートで 'max'ToConnections'を' y'として与えると、camel-httpルートはどのように動作しますか? – tuk

関連する問題