2017-05-05 10 views
0

ローカル環境では使用できず、ローカル環境でアクセスできないプロパティが不足しているため、ルートにエンドポイントがありません。ラクダがエンドポイントを初期化できないようにします

アプリケーションをローカル環境で起動すると、エラーorg.apache.camel.FailedToCreateRouteExceptionが発生します。しかし、サーバー環境では正常に動作します。

ラクダがローカル環境のエンドポイントを初期化しないようにする方法(環境がローカルであるかどうかを知るためのプロパティがあります)この

<choice> 
    <when> 
     <simple>{{is.local}} == true</simple> 
     <to uri="direct:local.route"/> 
    </when> 
    <otherwise> 
     <to uri="direct:server.route"/> 
    </otherwise> 
</choice> 

のようなしかしfrom句のために何かプロファイルを使用するMickaëlBの考えに

+0

「propertyinject」の下にここを参照してください。あなたはプロファイル管理やプロパティ設定で複数のラクダのコンテキストを使うべきだと思うのですが、 –

+0

@MickaëlBですが、それはエンドポイントに役立つでしょうか? – lapots

+1

はいです。あなたの場合、私はプロパティが最も関連性の高い解決策であると思います。したがって、 ''のようなルートを定義し、設定ファイルの値を決定することができます。 –

答えて

1

おかげで、私はこのようでした。

camel-route-local.xmlcamel-route.xmlを作成しました。最初のファイルには、ローカル環境で動作するルートが含まれています。第2 - ローカル環境ではないエンドポイントで動作するルート。ファイルcamel-context.xmlには定義定義camelContextが含まれています。私の主なapplication-context.xml

私はローカル環境を実行する場合、ファイルの末尾

<beans profile="default"> 
    <import resource="classpath:camel-route.xml"/> 
    <import resource="classpath:camel-context.xml"/> 
</beans> 

<beans profile="LOCAL"> 
    <import resource="classpath:camel-route-local.xml"/> 
    <import resource="classpath:camel-context.xml"/> 
</beans> 

でこれらの行を追加 - 別名LOCALとしてspringプロファイルを設定する - それは地元のために働くのルートでcamel-route-local.xmlをロードします環境(また私はis.localのためのチェックを取り除きました)、そして環境が別のプロファイルであるLOCALでないなら、それは主要なルートをロードします。

0

この部分にJava DSLを使用するだけで(単純なRouteBuilderを作成する)、必要な "from"部分を必要に応じて初期化することができます。

0

「より良い」代替ソリューションがあります。なぜ環境変数としてあなたのパラメータを注入しないのですか?次にそれらをプロパティとして注入し、Camelのプロパティリゾルバを使ってfrom()またはto()にプロパティを注入することができます。

は、私はあなたが地元の実行を処理するために、あなたのラクダのコンテキストを変更するべきではないと思います http://camel.apache.org/properties.html

関連する問題