2

Camel と EIP について数日間勉強してきましたが、よくわからないことがいくつかあります (まだ :))。たとえば、5 つのアプリケーションがあり、複数のテクノロジ (REST WS、JMS、データベースなど) を使用して相互にデータを交換しているとします。- Camel ルートはどこに配置すればよいですか? - 個々のアプリケーションのコードを変更し、特定のルートを宣言する必要がありますか? - 新しい Web アプリケーション (または OSGi バンドル) を作成し、ルートを処理するための中央プロバイダーとして機能させる必要がありますか? つまり、このアプリで定義された Camel エンドポイントを指すように他のアプリのコードを変更しますか? - Camel を使用すると、統合セット内の既存のすべてのアプリケーションのコードを変更することになりますか? つまり、Camel は実際のシナリオでどのように機能するのでしょうか? 物事を傍受する中央のウェブアプリのようなものですか?それを処理してから別の場所に送信しますか?それは私のアプリ内の何か(ビジネスルールと同じ場所にある)であり、それをプール/インターセプト/リッスンして処理しますか? これらはすべてダミーの質問であることはわかっていますが、昨日はそれらのことを考えてよく眠れませんでした. どんな助けでも本当に感謝します:)

4

2 に答える 2

2

これが私たちが使用したアプローチです。

まず、独立して実行されるアプリケーション/サービス間の通信を容易にするためにキャメルを使用していますか? このような場合は、camel ルートを含む新しいアプリケーションを作成できます。基本的に、他のすべてのコンポーネントを接続して相互に通信し、既存のアプリに最小限の変更を加えます。

一方で、すでに相互に通信しているサービスのアーキテクチャ標準としてキャメルを使用したいとお考えですか? この場合、既存の各アプリケーションに移動し、サービス間通信 (および構成やエラー処理など、それに関連するすべて) のコードをキャメル ルートとして書き直します。ビジネス ロジックをそのまま維持し、Web サービス呼び出しや jms などを行うための多くのコードを削除または書き直す可能性があります。

中規模のキャメル ルートは、数百行のボイラープレート コードを簡単に置き換えることができ、はるかに読みやすくなります。さらに、すべての EIP とコンポーネント (quartz、hazelcast など) を無料で入手できます。

参考までに、私は JBoss Fuse を ESB として (Apache Camel を使用して) 使用しており、エンタープライズ レベルの統合で非常にうまく機能しています。

于 2014-01-05T09:10:06.060 に答える
0

バイキングスティーブからの素晴らしい答え。

Camel を使用してレガシー アプリケーションを統合するため、Camel ルートは外部になります。メッセージ バスとして ActiveMQ を使用し、コンテナーとして tomcat6 を使用しています。今始めるとしたら、JBoss Fuse (Karaf) を使用します。

各エンド システムは、そのシステムのメッセージ バスへのアダプタとして機能する Camel ルート セット (このシステムでは戦争) を取得します。

インテグレーションは Camel ルート セットを取得します。

より多くの統合を追加するにつれて、各アプリケーションをそのデータ上の一連のサービスに進化させ、いつの日かサービス指向のアーキテクチャになるという考えです。

理想的な世界では、エンド システムのルート セットはエンド システムと同じサーバー上で実行され、統合ルート セットは中央で実行されます。実際には、すべてのルート セットを集中的に実行します。これは、エンド システムの SLA とホスティング契約の問題です。

より垂直に統合された環境をお持ちのようですので、正規のソリューションを私たちよりもきれいに実装できるはずです。

ネットワーク全体に Camel インスタンスが分散された場合、Fusesource は Fuse Fabric と呼ばれる管理ツールに取り組んでいました。Redhat がそれを取得して以来、それがどこまで進んだかはわかりません。

于 2014-01-05T10:36:10.267 に答える