5

Karaf と Apache Camel をベースにしたアプリケーションを開発しました。私たちのアプリケーションは完全にバンドル ( OSGI ) に基づいていますが、起動時に Camel コンテキスト (およびその Route Contexts ) もロードしています。これは、いくつかの静的ルートを定義したことを意味します。

私の質問はです。既存のルートをリセット/再起動するため、キャメル コンテキストを再読み込みする必要なく、アプリケーションの実行中にルートを動的にロードする方法はありますか。同じことが既に作成されたルートにも当てはまります。たとえば、既に存在するルートを編集したい場合などです。

全体的なアイデアは、ルートをデータベースに入れることを計画しているため、データベースは GUI によって編集されるということです。

では、これを行うための最良のアプローチは何ですか? ルートが追加、編集された場合などに OSGI バンドルをリロードすることが本当に最善の方法であるとは思いません...

アプリケーションの操作中に多かれ少なかれ、さまざまなエンドポイントとそれらに関連するルートが追加、編集、削除されます。

お知らせ下さい。

ありがとう、ティホ

4

3 に答える 3

6

良いアプローチは、ルートを小さなコンテキストにグループ化し、コンテキストごとにほんの数個 (または単一) のルートにすることだと思います。次に、他のルートを中断することなく、その小さなコンテキストをリロードします。

ただし、そのアプローチを信じていないので、CamelContext のメソッドを使用してルートを簡単に追加および削除できます。データベースからルートを構築し、 addRoutesremoveRouteを使用するルート ビルダーを作成します。

于 2014-04-29T05:52:13.157 に答える
3

実行時にxml形式のルートをロード/編集する方法のこのクックブックの例も参照して ください http://camel.apache.org/loading-routes-from-xml-files.html

于 2014-04-29T06:11:28.600 に答える