2016-10-12 13 views
0

私は春にラクダを使用しています。 私たちのルートの1つは、動的に選択されたエンドポイントにTCPメッセージを送信する必要があります。エンドポイントとして は単なる文字列ですが、私は私がラクダ消費者エンドポイントURLの動的オブジェクトパラメータ

.toD("netty4://...") 

を使用することができます知っているが、問題は、SSLパラメータを設定してあります。

それは次のようになりますので、ネッティーコンポーネントは、ルートURLパラメータとしてこれを定義しています

.toD("netty4://...?sslContextParameters=mySslContextParameters"); 

と、この作品は私が豆を持たせるために:

@Bean 
public SslContextParameters mySslContextParameters() { 
    ... 
    return sslContextParameters(); 
} 

これは、この単一のBeanインスタンスにバインドしかし私が必要とするのは、動的に構成されたBeanなので、プロデューサから取得したデータに基づいてSSLのさまざまなパラメータを設定できます。私が望む何

は、私はファクトリメソッドを呼び出し、それにいくつかのパラメータを渡すことができたときに、(私はこれが正しいラクダの構文ではありません知っている)、このようなものです:

.toD("netty://...?sslContextParameters=${bean('mySslContestParameters(${exchange.param1}, ${exchange.param2}')}"); 
+0

あなたが結合Beanに見たことが定義? https://camel.apache.org/bean.html – Mechkov

+0

Beanバインディングを使用する方法の例を教えてください。そうすれば、Beanファクトリメソッドのパラメータを渡すことができますか? – bodziec

答えて

0

あなたは受信者リストを使用することができますこのあたりのEIPはcamel FAQです。

0

このラクダFAQに従って受信者リストEIPを使用することができます。

Thxスティーブ、それは良いアドバイスでした。

私も同様の質問がありましたが、私はあなたのアドバイスを使用して、それは仕事です!私のラクダのcontext.xmlで

、私は2つのsslContextParameters

... 
<camel:sslContextParameters id="firstSsl"> 
    <camel:keyManagers keyPassword="changeit"> 
     <camel:keyStore resource="/test/client.keystore.jks" password="changeit" /> 
    </camel:keyManagers> 
    <camel:trustManagers> 
      <camel:keyStore resource="/test/client.truststore.jks" password="changeit" /> 
    </camel:trustManagers> 
</camel:sslContextParameters> 
<camel:sslContextParameters id="secondSsl"> 
    <camel:keyManagers keyPassword="otherpassword"> 
     <camel:keyStore resource="/test/other-keystore.jks" password="otherpassword" /> 
    </camel:keyManagers> 
    <camel:trustManagers> 
     <camel:keyStore resource="/test/other-truststore.jks" password="otherpassword" /> 
    </camel:trustManagers> 
</camel:sslContextParameters> 
... 
私routeBuilderで

.setHeader("sslContext", constant("firstSsl")) 
//or 
.setHeader("sslContext", constant("secondSsl")) 
... 
.recipientList(simple("https4://override/?bridgeEndpoint=false&sslContextParametersRef=${headers.sslContext}")) 
関連する問題