2016-09-19 7 views
0

私たちはJavaメソッドを呼び出す多くの(20-50) "直接"ルートを持つApache Camelを使用してWebサービスを実装しています。すべてのメソッドは、基本的にビジネスルール処理用であるかDAOアクセスメソッド用であるかにかかわらず、そのルートを持っています。すべてのルートでfrom("direct:").to("direct")が使用されますが、他のコンポーネントには適用されません。これはApache Camelの悪い使用例ですか?

これは標準的なController-> bo-> daoレイヤーからシステムを切り離すように見えるかもしれませんが、それはCamelルートの不必要なブックストアを追加します。

もっと良い選択肢は、ビジネスオブジェクトとDao層のJavaインタフェースを定義するだけで、他のサービス(システム外部のもの、file://、またはhttp://など)の要求が内部の依存関係ビジネスオブジェクトまたはコントローラ。この追加インタフェースへの実装は、Apache Camelを使用して外部サービスと通信することになります。

私は現在の同僚に自分の意見を見せる方法を考えています。

思考?

tldr; アプリケーションが1つまたは2つしか存在しない場合、Apache Camelを使用する必要がありますか?

+0

こんにちは、ようこそ。残念ながら、あなたの質問は、このフォーマットではあまりにも漠然としています。[Is Stack Overflow a Forum?](http://meta.stackexchange.com/q/92107/195481)を参照してください。ここで質問をするには、ディスカッションのトピックではなく、解決策を探している特定の問題が本当に必要です。 – Jeff

+0

ねえ、申し訳ありませんが、私が犯行を引き起こした場合、ここにかなり冷たいメッセージを残している人がたくさんいます。私はそれを避けるために小さな人格を追加しようとしますが、私がこの質問がサイトに適していないと言う理由は、おそらくいずれかの方法で議論することができるということです。これらの種類の事柄は非常に状況がよくなります。より詳細な情報を提供し、より良い答えを得ることは、ずっと良いことです。あなたが指摘しているように、これは私の専門ではないので、私は間違っているかもしれません。しかし、私は10年以上のプログラミングをしてきました。だから私は何を言っているのか考えています。 – Jeff

+0

コード例で問題が明確になると思います(たとえば、システム全体を通して1つの一般的なメッセージで行われる簡略化されたパスを示しています)。また、それはほぼ確実に[programmers.se](http://programmers.stackexchange.com/)に適しています。 –

答えて

1

私はさまざまな複雑さ、プロトコル、パターンに20システムが関わっているアプリケーションを使用しています。私は50以上のシステムが関わっている他の場所を知っています。唯一の制限はデザイン、パフォーマンスなどにあります。

Apache Camelはミドルウェアフレームワークです。基本的に、ビジネスロジックは、データがどのように入手され、どこに配信されるのか、提供されるべきものだけを知るべきではありません。キャメルは残りを世話するべきです。

ところで、あなたのミドルウェアは外界と話しませんか?なぜdirectのみを使用し、他のコンポーネントは使用しないのですか?

また、Bean統合を使用してミドルウェアを非表示にすることもできます。それはあなたにさらにデカップリングを与えます。ここをクリックしてください:http://camel.apache.org/bean-integration.html

これは実際に達成したいこととあなたの要件が何であるかによって異なります。

0

具体的な使用例としては、あなたのシステムと外界の間の接着剤としてCamelを使用している通常のJava実装では、たぶん良かったと思います。 Souciance explains in his answerのように、Camelは複数のシステムと統合する必要があるときには本当に輝きます。そのため、少なくとも外界との通信に備えておく必要があります。

しかし、すでにCamelを使ってシステムの内部構造を実装しているので、私はこれを純粋なJavaに置き換える努力をしても意味がないと言わなければならないでしょう。特に現在の実装では、たとえば、directルートの代わりに高性能MQを使用するなど、システムをより堅牢にすることができます。これにより、システムの障害に対する耐性が増し、後でDAOオブジェクトの周りにルートを持つことで、システムの負荷が増大したときにDB更新のバッチ処理を実装する方がはるかに簡単です。

関連する問題