2016-07-24 5 views
0

私のアプリケーションに10種類のCa​​melルートがあるとします。ある特定のルートだけを問題中に停止し、それを(Javaプロセッサの1つで)変更し、他のルートに影響を与えずに再度展開できますか?Apacheのラクダのルート展開 - 独立していますか?

また、他のルートが既に機能している間に、新しいルートを作成して展開することもできます。

これがデフォルトの動作でない場合、これを達成するために使用できるオプションは何ですか?

+0

Checkout hawtio:http://hawt.io 彼はこの仕事のために手袋のように収まります。 –

答えて

1

Karaf(Apache ServiceMix/JBoss Fuseも同様)はホットデプロイメントを提供しています(現在はJBoss AS/WildFlyでもサポートされている可能性があります)。つまり、展開フォルダ(xmlsだけを意味します)に独立した青写真のxmlファイルとしてルートを作成することができます。同様に、XMLに変更を加えるたびにxmlファイルをすべてのルートに含めることができます。自動的に再デプロイされます。

このアプローチにはいくつかの欠点があります.JAAに対処する必要がある場合、またはカスタムプロセッサ/クラスを処理する必要がある場合は複雑になります。

Apache ServiceMix/JBoss Fuseプロジェクトの例を参照してください。

私はこのアプローチを特にマイクロコンテナのアプローチをとっておきたいと思っています。軽いApache Karaf + Camel Route XMLファイル+ Dockerのようなものです。

私はこの数年前に行ったことがありますが、これは他のどのコンテナでも実現できる可能性がありますが、わかりません。

+1

返事@gnanagurusありがとうございました。あなたがカスタムプロセッサ/クラスを扱うことは複雑であると言いました - それは不可能ですか?またはいくつかのより複雑なステップで達成することができますか? –

0

org.apache.camel.CamelContext.stopRoute(id)&でルートを停止することができます。新しいルートを作成してコンテキストに追加することで、ルートを変更できます。これにより、実行時にルートのロジックを変更できます。

これで自動的に新しいJavaプロセッサをホットデプロイすることはできません。あなたの質問のこの側面は、Camel特有のものではないと思います。@gnanaguruで言及されたOSGi/Karafを含めて、これらはいくつかのオプションであるようです。

おそらく、Javaプロセッサーから変化する可能性のあるロジックを、外部ファイルのJavaScriptやルート自体のようなより動的なものに移動することは、問題のより簡単な解決策になります。

関連する問題