159

ベテランの Spring ユーザーとして、私は Spring Integration がいくつかの (JMS) メッセージング機能を必要とする最近のプロジェクトで最も理にかなっているだろうと想定していました (詳細)。Spring Integration を数日使用した後でも、リクエスト/レスポンス (異なる JMS キューでリッスンする) 通信を行うために構成する必要があるチャネルの量を考えると、多くの構成オーバーヘッドのように感じます。

したがって、Camel が Spring Integration とどのように異なるかについての背景情報を探していましたが、そこにある情報はかなり予備のようです。

質問: あるスタックを他のスタックよりも使用して、どのような経験をしましたか? Spring Integration にサポートがない場合、どのシナリオで Camel をお勧めしますか? それぞれの長所と短所はどこに見られますか? 実際のプロジェクトからのアドバイスは大歓迎です。

4

11 に答える 11

84

流暢な API が本当に優れているため、Spring-Integration ではなく Camel を選択します。Spring プロジェクトで実際に使用し、Spring を使用してその一部を構成します。プログラミング API は明確で、実用的なコンポーネントの大規模なセットがあります。

私たちは小規模な銃撃戦を行いましたが、基本的にその時点で、私たちの要件でキャメルが勝ちました。主に、内部データファイルを外部関係者との間で転送するために使用します。これには、通常、ftp/sftp/... を使用して送信するか、電子メールに添付して送信する形式変換が必要です。

編集、コンパイル、デバッグのサイクルが短縮されました。groovy を使用してルートのセットアップを実験すると、ボーナスが追加されます。

Spring-Integration も素晴らしい製品であり、私たちのニーズも満たしてくれると確信しています。

于 2010-06-13T22:29:04.067 に答える
76

すでに Spring プロジェクトを持っていて、ファイル、FTP、JMS、JDBC などを使用して「基本的な」統合を追加する必要がある場合にのみ、Spring Integration をお勧めします。

Apache Camel には 2 つの主な利点があります。

  1. さらに多くのテクノロジーがサポートされています。
  2. さらに、(優れた) XML DSL として、Java、Groovy、および Scala 用の流暢な API があります。

Apache Camel は Spring との統合が非常に優れているため、ほとんどの Spring プロジェクトで Spring Integration の代わりに使用することさえあります。

詳細が必要な場合は、ブログ投稿で私の経験を読むことができます: Spoiled for Choice: which Integration Framework to use – Spring Integration, Mule ESB or Apache Camel?

于 2012-01-11T09:00:57.840 に答える
38

私は最近、 Apache Kafkaを統合することを目的として、Camel vs Spring Integration の銃撃戦を行いました。熱心な Spring 開発者であるにも関わらず、悲しいことに、Spring の増え続けるプロジェクト スタックが確認されたことに対する疑念を発見ました。これには例外があるかもしれません。つまり、Spring の由来であり、Spring が優れた機能を発揮する MVC に関係するすべてのことですが、コンテナー機能の上に新しい機能を提供しようとする他の試みは、3 つの理由で不十分であり、SI Kafka のユースケースが確認しています。それらのすべて:

  • XML 構成用の、長くて使いにくい DSL の導入。
  • すべてのフレームワーク コンポーネントを接続するための xml 構成コードのページ。
  • 専用フレームワークと同等の機能を提供するためのリソースが不足しています。

ここで、私の銃撃戦の結果に戻ります。最も重要なことは、Camelsのエンドポイント間のルートの全体的な概念に感銘を受けたことです。Kafka はこの概念とシームレスに統合されており、3 行の構成ですべてを稼働させることができます。プロセス中に発生した問題は、プロジェクト チームからの十分なドキュメントと、 Stackoverflow に関する多くの質問によって適切に対処されます。大事なことを言い忘れましたが、Spring への包括的な統合により、すべての要望が実現されます。

それとは対照的に、SI では、Kafka 統合のドキュメントは非常に集中的であり、Kafka を統合する方法を明確に説明していません。Kafka の統合は、物事を行う SI 方式に押し込まれ、複雑さが増します。Stackoverflow などのその他のドキュメントも、Camel ほど豊富ではなく、あまり役に立ちません。

私の結論: cobbler は自分の取引に固執します。Spring をコンテナーとして使用し、Camel をシステム統合フレームワークとして使用します。

于 2015-07-21T10:49:57.870 に答える
21

それは本当にあなたが何をしたいかによって異なります。独自のメッセージング ソリューションを構築するために何かを拡張する必要がある場合は、Spring Integration の方が優れたプログラミング モデルを備えています。カスタム コードなしで多くのプロトコルをサポートするものが必要な場合、Camel は Spring Integration よりも優れています。

小規模な銃撃戦を行うことは非常に良いアイデアですが、プロジェクトで通常行うような種類のことをしようとしていることを確認してください.

--disclaimer: 私は Spring Integration コミッターです

于 2010-06-18T06:05:18.263 に答える
9

私が見た Camel と SI のほとんどの比較では、次の点が考慮されていません。

1.) Spring Boot が Spring Integration の開発者の生産性に与えた影響

2.) Spring XD の効果により、Spring Integration アプリケーションをコードのコンパイルなしで利用できるようになりました。また、Spring XD の拡張を検討している場合、Spring XD のソースとシンクは単なる Spring Integration チャネル アダプターです。

3.) Spring XD の効果は、Spring Integration、Spring Batch、Spring Data (+Hadoop!) を 1 つのスタックに統合し、効果的にバッチ処理とストリーム処理、HDFS/Apache Hadoop サポートなどを Spring Integration にもたらしました。

4.) 間もなくリリースされる Spring Integration 4.0 Java DSL の効果https://github.com/spring-projects/spring-integration-extensions/wiki/Spring-Integration-Java-DSL-Reference

ご検討のほど、

/Pieter (免責事項私は Pivotal で働いています)

于 2014-10-20T21:30:43.737 に答える
5

Apache Camel は非常に優れたフレームワークであり、完成度も非常に高いです。しかし、アプリケーションが spring を使用している場合、私の個人的なアドバイスは、Spring Integration を使用することです。

Spring Integration は、Spring-Source エコシステムの統合 EIP 苦情フレームワークです。エコシステムとの優れた統合があります: Spring Boot、Batch、XD。コアでさえ、Spring Framework 4 から同じ抽象化を使用しています。Spring Integration の基本的なメッセージング抽象化が非常に強力であることの証明として、メッセージング抽象化の一部がフレームワークに移動されました。たとえば、Spring フレームワークは、Spring Web のメッセージング抽象化、Web ソケット サポートを使用します。

Apache Camel を使用することに関して、Spring 統合を備えた Spring アプリケーションのもう 1 つの良い点は、Spring 統合を使用すると、アプリケーション コンテキストを 1 つしか使用できないことです。Camel コンテキストは Spring コンテキストであることを思い出してください。新しい Spring バージョンを使用する機会があれば、設定に Spring Integration Java DSL を使用することをお勧めします。新しいプロジェクトで使用していますが、より読みやすく明確に感じられます。この反省が評価の参考になれば幸いです。

于 2016-03-11T22:48:56.470 に答える
4

実際、FTP は潜伏期間を終えたと言えます。SI フォーラム/JIRA で簡単な検索を行うと、実装された新機能と修正されたバグを確認できます。さまざまなおしゃべりから、すでに実稼働で使用されているようです。

http://forum.springsource.org/forumdisplay.php?42-統合
https://jira.springsource.org/browse/INT

乾杯オレグ

免責事項: 私は Spring Integration コミッターです

于 2011-05-25T01:11:54.523 に答える
2

Spring Integration で Camel を使用する理由の 1 つは、より機能的な EIP セットが必要な場合です。Spring Integration は、ThreadPool などの抽象化を提供しません。

Camel は、並行コードでの作業のいくつかの側面を簡素化するために、追加の構成要素を提供します。

http://camel.apache.org/camel-23-threadpool-configuration.html

この種の必要がなく、ファイル、JMS、FTP エンドポイントなどに接続したいだけの場合は、Spring Integration を使用してください。

于 2012-02-15T20:28:21.713 に答える