web-dev-qa-db-ja.com

Apache Camelとは一体何ですか?

Camel が正確に何をするのか理解できません。

あなたが101ワードでCamelの紹介をすることができるならば:

  • 正確には何ですか?
  • Javaで書かれたアプリケーションとどのようにやり取りするのですか?
  • それはサーバーと一緒に行くものですか?
  • 独立したプログラムですか?

ラクダが何であるかを説明してください。

1241
Myy

5〜10分あれば、Jonathan Ansteyによる Apache Camelとの統合 を読んでくださいこれは、Camelの概念のいくつかを簡単に紹介し、概要を説明した、よく書かれたもので、コードサンプルを使ったユースケースを実装しています。その中で、ジョナサンはこう書いています:

Apache CamelはオープンソースのJavaフレームワークで、開発者にとって統合を容易にし、よりアクセスしやすくすることに重点が置かれています。それは提供することによってこれをします:

  • 広く使用されているすべての/の具体的な実装 エンタープライズ統合パターン (EIP)
  • 多種多様なトランスポートおよびAPIへの接続
  • eIPとトランスポートを結び付けるために使いやすいドメイン固有言語(DSL)

最初の章でCamelを紹介している Camel in Action の無料の章もあります。 Jonathanはその本の共著者です。

641
Claus Ibsen

よりアクセスしやすい方法でこれを説明するための私の見解...

Apache Camelが何であるかを理解するには、エンタープライズ統合パターンが何であるかを理解する必要があります。

おそらく既に知っていることから始めましょう:シングルトンパターン、ファクトリーパターンなど。これらは、問題に対するソリューションを整理する方法にすぎませんが、ソリューション自体ではありません。これらのパターンは、彼らの本を出版したときに、4人のギャングによって私たちの残りのために分析され、抽出されました: デザインパターン 。コードを最適に構成する方法を考える際の多大な労力を節約してくれました。

ギャングオブフォーと同じように、Gregor HohpeとBobby Woolfは本を執筆しました Enterprise Integration Patterns (EIP)で、新しいパターンと青写真のセットを提案し、文書化しますどうすればbestコンポーネントを同じプロセスまたは異なるマシンで実行できる大きなコンポーネントベースのシステムを設計できるか。

彼らは基本的に、システムをmessage指向に構成することを提案します-コンポーネントは入力と出力としてメッセージを使用して互いに通信し、他には何もありません。これらは、システム全体を形成するさまざまなコンポーネントから選択して実装できるパターンの完全なセットを示しています。

では、Apache Camelとは何ですか?

Apache Camelは、EIP、基本オブジェクト、一般的に必要な実装、デバッグツール、構成システム、およびEIPに従うソリューションを実装する時間を大幅に節約する他の多くのヘルパーのインターフェイスを提供します。

MVCを取る。 MVCは理論的には非常に単純であり、フレームワークの助けなしに実装できます。しかし、優れたMVCフレームワークはすぐに使用できる構造を提供し、大規模なMVCプロジェクトを作成する際に必要な他のすべての "サイド"のことを考え出したため、ほとんどの場合それらを使用します。

これがまさに、EIP用のApache Camelです。 これは、EIPに従うためにソリューションを実装したい人のための完全な生産準備の整ったフレームワークです。

1070
Amr Mostafa

プロジェクトの説明を作成する は複雑ではないはずです。

私は言う:

Apache Camelは、メッセージングテクノロジをルーティングと結び付けています。これは、メッセージングの開始点と終了点を結合して、さまざまな送信元からさまざまな送信先へのメッセージの転送を可能にします。例えば、「JMS」 - >「JSON」、「HTTP」 - >「JMS」、または「FTP」 - >「JMS」、「HTTP」 - >「JMS」、「JSON」 - >「JMS」の順に選択します。

ウィキペディアによると:

Apache Camelは、ルーティングおよびメディエーションルールを設定するためにAPI(または宣言型Javaドメイン固有言語)を使用して、エンタープライズ統合パターンのJavaオブジェクトベースの実装を提供する、ルールベースのルーティングおよびメディエーションエンジンです。ドメイン固有の言語とは、Apache CamelがあなたのIDEでルーティングルールのタイプセーフなスマートな補完を大量のXML設定ファイルなしでサポートできることを意味します。ただし、Spring内部のXML構成もサポートされています。

見る?それは難しくありませんでしたか?

648
David Newcomb

要するに:

システムを接続/統合する必要がある場合は、おそらく何らかのデータソースに接続してから、このデータを処理してビジネス要件に合わせる必要があります。

それをするために:

1)あなたはそれをするカスタムプログラムを開発することができます(時間がかかり、理解するのが難しいかもしれません、他の開発者のために維持します)。

2)別の方法として、Apache Camelを使用して標準化された方法でそれを実行することもできます(ほとんどのコネクターが既に開発されているので、セットアップしてロジックをプラグインする必要があります)

キャメルはあなたを助けるでしょう:

  1. 任意のソース/フォーマットからデータを消費する
  2. このデータを処理する
  3. 任意のソース/フォーマットにデータを出力

Apache Camelを使うことであなたのシステムを理解し、保守し、他の開発者に拡張することを容易にするでしょう。

Apache Camelは、エンタープライズ統合パターンを使って開発されています。パターンはあなたが良い方法でシステムを統合するのを助けます:-)

114
Marcin Wasiluk

CamelはAからBにメッセージを送信します。

enter image description here

なぜこれ全体のフレームワーク?さて、あなたが持っている場合はどうなりますか?

  • 多数の送信者と多数の受信者
  • 1ダースのプロトコル(ftphttpjmsなど)
  • 多くの複雑な規則
    • 受信者AとBのみにメッセージAを送信する
    • 受信者CにメッセージBを送信する XMLとして しかし部分的に 翻訳充実 (メタデータを追加) IF条件X そして受信者Dにも送信するしかし CSVとして .

だから今あなたが必要です:

  • 翻訳 プロトコル間
  • 接着剤 コンポーネントをまとめて
  • ルートを定義する - 何がどこに行く
  • フィルタ いくつかのケースではいくつかのこと

Camelは箱から出してあなたに上記の(そしてもっと)を与える:

enter image description here

あなたがクールなDSL言語を使って何をどのように定義するのか:

  new DefaultCamelContext().addRoutes(new RouteBuilder() {
        public void configure() {
            from("jms:incomingMessages")
                    .choice() // start router rules
                    .when(header("CamelFileName")
                            .endsWith(".xml"))
                    .to("jms:xmlMessages")
                    .when(header("CamelFileName")
                            .endsWith(".csv"))
                    .to("ftp:csvMessages");
}

this および this およびCamel in Actionも参照してください(他の人が言っているように、すばらしい本です!)

80
Andrejs

ダイアグラムは何千もの説明よりも優れています。この図はCamelのアーキテクチャを示しています。

enter image description here

72
CrimsonFantasy

Apache Camelを理解する前に理解しておく必要があるものの1つは、エンタープライズ統合パターンです。現場の誰もが実際にそれらを知っているわけではありません。確実にEnterprise Integration Patternsの本を読むことができますが、それらを理解するためのより早い方法は、 Enterprise Application Integration に関するWikipediaの記事のようなものを読むことです。

この分野を読んで理解した方なら、Apache Camelの目的を理解するほうがはるかに可能性が高いでしょう。

HTH

48
Crollster

アナログに基づいて

キャメルベースのルーティングは、航空会社の所有者(例えば、アメリカン航空、ジェットエアウェイズ)の靴に身を置くことで、非常に簡単に理解できます。

「あなたの航空会社」の目的は、世界中のある都市から別の都市へ「乗客」を「運ぶ」ことです。あなたは乗客を運ぶためにボーイング、エアバス、HALのような異なる「航空機会社」からの航空機を使います。

あなたの航空会社のボードは、出発都市の「空港」を使用して乗客を移動し、到着都市の空港を使用して搭乗します。乗客は複数の都市に「移動」する場合がありますが、航空会社の航空機と都市の間を移動するには、空港を通過する必要があります。

街から「出発する」旅客は、基本的にあなたの航空会社の航空機に「到着する」ことに注意してください。そして、都市に「到着」する乗客は、本質的に航空機から出発しています。私たちは航空会社の所有者の立場にいるので、「到着旅客」と「出発旅客」という用語は、都市の観点に基づく従来の概念とは逆になります。

各都市の同じ「空港」インフラストラクチャは、「出発」および「到着」の乗客によって使用されます。空港は、出発する乗客のための「出発インフラストラクチャ」を提供し、これは到着する乗客のために提供される「到着インフラストラクチャ」とは異なる。

旅行中に、あなたの航空会社によって航空機の中に提供される様々な「設備」のおかげで、乗客は彼らの活動に彼らの日をし続けることができます。

それに加えて、あなたの航空会社はまた「現地語の理解」や「旅行」のための準備などの特別な治療のためのラウンジ施設を提供しています。

上記で使用したいくつかの単語/フレーズを以下のように置き換えます。

あなたの航空会社:アパッチキャメル

航空機会社:輸送メカニズム

あなたの航空会社の航空機:Apache Camelの基本的な輸送メカニズム

運びます:ルート

乗客:メッセージ。

市:システム。

空港:ラクダコンポーネント。

現地の言語を理解する:型変換

出発:生産、生産

到着:消費、消費

旅行:ルーテッド

アメニティ:提供

単語を置き換えた後、これはあなたが得るものです:

'Apache Camel'の目的 は、あるメッセージを世界のあるシステムから別のシステムに転送することです。 Apacheキャメルは、メッセージルーティングにさまざまな転送メカニズムを使用します。

Apache Camelは、fromシステムのCamelベースのコンポーネントを使用してメッセージを受け取り、toシステムのCamelベースのコンポーネントを使用してそれらをドロップします。メッセージは複数のシステムにルーティングされる可能性がありますが、「Apache Camelの基盤となるトランスポートメカニズム」とシステムの間を移動するには、「Camelベースのコンポーネント」を通過する必要があります。

システムから「作成された」メッセージは、基本的にApache Camelの基本的な転送メカニズムに「取り込まれ」ます。そして、システムによって消費されるメッセージは、本質的に「Apache Camelの基礎となるトランスポートメカニズム」によって生成されます。

私たちはラクダを理解しようとしているので、ここからラクダの視点から考えなければなりません。したがって、「消費者メッセージ」および「プロデューサーメッセージ」という用語の意味は、システムの観点に基づく従来の概念とは逆になります。

同じ「キャメルベースのコンポーネント」のコーディングインフラストラクチャが「プロデューサメッセージ」と「コンシューマメッセージ」によって使用されます。 「キャメルベースのコンポーネント」は、「プロデューサメッセージ」の「プロデューサエンドポイント」と「コンシューマメッセージ」の「コンシューマエンドポイント」を提供します。

メッセージはルーティングされているときCamelによって処理することができます。

このルーティングに加えて、Camelは '型変換'などの特別な機能を提供します。

48
DolphinJava

エンタープライズ統合パターンを知っていれば、Apache CamelはすべてのEIPを実装する1つの統合フレームワークです。

そして、CamelをWebコンテナのスタンドアロンアプリケーションとしてデプロイすることができます。

基本的に、異なるプロトコルやテクノロジを持つ複数のアプリケーションを統合する必要がある場合は、Camelを使用できます。

34
Sunil

別の観点からの定義

Apache Camelは統合フレームワークです。これはいくつかのJavaライブラリで構成されており、Javaプラットフォーム上で統合問題を実装するのに役立ちます。これが何を意味し、それが一方の側のAPIおよび他方の側のエンタープライズサービスバス(ESB)とどのように異なるかについては、私の記事「 Apache Camelを使用する場合 」で説明しています。

22
Kai Wähner

正確には何ですか?

Apache Camel は、すべてのエンタープライズ統合パターンを実装する軽量の統合フレームワークです。必要なパターンを使用してさまざまなアプリケーションを簡単に統合できます。

Java、Spring XML、Scala、またはGroovyを使用できます。あなたが想像できるほとんどすべての技術、例えばHTTP、FTP、JMS、EJB、JPA、RMI、JMS、JMX、LDAP、Nettyなどが利用可能です

この articleEIPパターンのarticle を見てください。

Javaで書かれたアプリケーションとどのようにやり取りするのですか?

Camelは、 Javaドメイン固有言語またはDSL を使用して、以下に示すようにさまざまなドメイン固有言語(DSL)でエンタープライズ統合パターンまたはルートを作成します。

Java DSL - 流暢なビルダースタイルを使用するJavaベースのDSL。

エンタープライズ統合パターンの物語はこれらの概念のまわりで解決します:

メッセージ、エンドポイント、プロデューサ、コンシューマ、ルーティング、バス、変換、および処理

リアルタイムのユースケースの1つとして、この article By Anirban Konarをご覧ください。

それはサーバーと一緒に行くものですか?

それは、複数のエンタープライズサブシステム間のブリッジとして機能します。

独立したプログラムですか?

統合フレームワークであるApache Camelは、さまざまな独立したアプリケーションを統合します。

Camelの主な利点 :すべての統合に同じ概念を使用することで、異なるアプリケーションを異なるテクノロジ(および異なるプロトコル)に統合できます。

14
Ravindra babu

コンピューティングにおける「新しい」ことの大部分は、まったく新しいものではなく、すでによく理解されていることを曖昧にするラッパーです。理解しにくい場合は、通常、別の目的のために新しい言語の用語を発明するか既存の用語を植民地化することを決定したためです( that の良い例はX開発者の「クライアント」の反転です。 「サーバー」という意味です。

キャメルは、アプリケーション間ミドルウェアのためのJavaベースのラッパー/ APIです。

ミドルウェアは、共通の言語やデータ型を共有していないエンティティ間で通訳サービスを提供するソフトウェアの総称です。

それが、キャメルの実情です。 EIPタイプのミドルウェアを提供していることに注目して、説明を具体化することができます。

アプリケーションが通信するために必要なものの詳細を知ることができないので、ミドルウェア自体を提供しません。しかし、それはそのミドルウェアの不変部分(開始点の作成、終了点の作成、開始および終了の条件の作成など)を作成するためのAPIを提供します。

それが役立つことを願っています。

12
MMacD

これは別の試みです。

Webmethods、ICAN Seebeyond、Tibco BW、IBM Brokerのようなものがどのように存在していたか、または存在していたかがわかります。彼ら全員が企業内の統合ソリューションを手助けしました。これらのツールは、一般にエンタープライズアプリケーション統合(EAI)ツールという名前で知られています。

これらのテクノロジを中心に構築されたドラッグドロップツールや、Javaでアダプタを記述しなければならない部分もありました。これらのアダプタコードは、テストされていないか、テストに関するツールや自動化が不十分でした。

プログラミングの設計パターンと同様に、一般的な統合ソリューションのためのエンタープライズ統合パターンがあります。彼らはグレゴール・ホープとボビー・ウルフの同名の本によって有名になりました。

1つまたは複数のEIPを使用する統合ソリューションを実装することはかなり可能ですが、CamelはXML、Java、Groovy、またはScalaのいずれかを使用して、コードベース内でこれを行う試みです。

キャメルはその豊富なDSLとルーティングメカニズムを通して本にリストされたすべてのエンタープライズ統合パターンをサポートします。

だからCamelはあなたの統合コードをテストするためのより良いサポートを持つ他のEAIツールと競合する技術です。ドメイン固有の言語(DSL)のため、コードは簡潔です。ビジネスユーザーでも読むことができ、無料で生産的になります。

8
skipy

メッセージングを容易にし、メッセージングの問題を解決するためのフレームワークがたくさんあります。そのような製品の1つがApache Camelです。

一般的な問題のほとんどは、デザインパターンと呼ばれる解決策を証明しています。メッセージングの設計パターンは、エンタープライズ統合パターン(EIP)です。これについては、よく説明されています ここ 。 Apacheのラクダは私達がEIPを使用して私達の解決を実行するのを助けます。

統合フレームワークの強みは、EIPや他のパターン、トランスポートやコンポーネントの数、そしてApacheキャメルがリストのトップに立っている開発の容易さを通して私たちを容易にする能力です。

フレームワークにはそれぞれ独自の利点があります。Apacheラクダの特別な機能のいくつかは次のとおりです。

  1. これは、人気のある多くのDSL、つまりJava DSLおよびSpring xmlベースのDSLでのコーディングを提供します。
  2. 使い方が簡単で使いやすい。
  3. Fuse IDEは、UIを介してコーディングするのに役立つ製品です。
7
Naveen Raj

平易な英語では、ラクダはボイラープレートコードの多くなしで(多くの)物事を成し遂げます。

念のために、以下のJava DSLはRESTエンドポイントを作成します。これは、List of ProductsからなるXMLを受け入れ、それを複数の製品に分割し、それを使用してBrandProcessorのProcessメソッドを呼び出すことができます。 。そして、.parallelProcessing(コメントアウトされている部分に注目)を追加するだけで、すべてのProductオブジェクトが並列処理されます。 (製品クラスは、入力xmlが制限されているXSDから生成されたJAXB/XJC Javaスタブです。)これだけのコード(Camelの依存関係が少ない)は、何百行ものJavaコードを処理するために使用されます。

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.split(stax(Product.class))
/*.parallelProcessing()*/
.process(itemDeltaProcessor);

ルートIDとロギングステートメントを追加した後

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.routeId("Item-DeltaRESTRoute")
.log(LoggingLevel.INFO, "Item Delta received on Item-DeltaRESTRoute")
.split(stax(Product.class))
.parallelProcessing()
.process(itemDeltaProcessor);

これは単なるサンプルです。Camelは単なるRESTエンドポイント以上のものです。プラグイン可能なコンポーネントの一覧を見てみてください http://camel.Apache.org/components.html

6
KingJulien

キャメルはルーティング、変換、モニタリングに役立ちます。

それはRoutesを使います。これは次のように説明できます。

サービスバスが特定のメッセージを受信すると、キュー/トピックなどのサービス/ブローカの送信先を経由しないでルーティングされます。このパスはルートとして知られています。

例: アナリストによる入力があり、アプリケーション/ Webコンポーネントを介して処理された後、結果が特定の株の更新について関心のある/登録されたすべてのメンバーに公開されます。

5
sa_nyc

Apache Camelは、エンタープライズ統合用のJavaフレームワークです。例: - あなたが多くのベンダAPIと相互作用するWebアプリケーションを構築しているなら、外部統合ツールとしてラクダを使うことができます。ユースケースに基づいて、もっと多くのことができます。 Manningの出版物からのCamel in Actionは、Camelを学ぶための素晴らしい本です。積分は以下のように定義できます。

Java DSL

from("jetty://0.0.0.0:8080/searchProduct").routeId("searchProduct.products").threads()
    .log(LoggingLevel.INFO, "searchProducts request Received with body: ${body}")
    .bean(Processor.class, "createSearchProductsRequest").removeHeaders("CamelHttp*")
    .setHeader(Exchange.HTTP_METHOD, constant(org.Apache.camel.component.http4.HttpMethods.POST))
    .to("http4://" + preLiveBaseAPI + searchProductsUrl + "?apiKey=" + ApiKey
                    + "&bridgeEndpoint=true")
    .bean(Processor.class, "buildResponse").log(LoggingLevel.INFO, "Search products finished");

これは単にREST AP​​Iエンドポイントを作成することで、これが次に外部APIを呼び出して要求を送り返します。

春DSL

<route id="GROUPS-SHOW">
    <from uri="jetty://0.0.0.0:8080/showGroups" />
    <log loggingLevel="INFO" message="Reqeust receviced service to fetch groups -> ${body}" />
    <to uri="direct:auditLog" />
    <process ref="TestProcessor" />
</route>

あなたの質問に来て

  1. 正確には何ですか?回答: - エンタープライズ統合パターンを実装するフレームワークです。
  2. Javaで書かれたアプリケーションとどのようにやり取りするのですか?回答: - http、ftp、amqpなど、使用可能なプロトコルと対話できます。
  3. それはサーバーと一緒に行くものですか?回答: - Tomcatのようなコンテナにデプロイすることも、Javaプロセスとして個別にデプロイすることもできます。
  4. 独立したプログラムですか?回答: - それは可能です。

それが役に立てば幸い

3
Khader M A

はい、これはおそらく少し遅いです。しかし、他の人のコメントに付け加える1つのことは、Camelは実際には機能の完全なセットではなくツールボックスだということです。開発時にはこの点に留意し、さまざまな変換やプロトコル変換を行う必要があります。

Camel自体は他のフレームワークに依存しているため、自分のニーズに最も適しているものを理解するために、それらを理解する必要がある場合があります。たとえばRESTを処理する方法は複数あります。これは最初は少々分かりにくいかもしれませんが、使用とテストを開始すると、安心してさまざまな概念に関する知識が増えるでしょう。

Amazonのようなeコマース会社を設立し、販売する商品の戦略/選択にのみ集中したいとします。 Amazonの配送艦隊とは異なり、商品を売り手から倉庫に移動する代わりに、梱包のように倉庫で変更して他の市や顧客に発送するのではありません。あなたはこれをすべて行う会社を雇い、あなたにすべての倉庫の場所、車種、配達場所および何をするべきかのリストの情報を与えるだけです。それから、彼らはそれを自分で処理します。それはApache Camelです。あなたがいったんそれらに物を引き渡すならば、彼らは物事を端から端へ動かすことの世話をするので、あなたは自由に他の物に集中することができます。

2
Chetan Gowda

101ワード紹介

Camelは、アプリケーションを統合するための一貫したAPIとプログラミングモデルを備えたフレームワークです。 APIは、 エンタープライズ統合パターン - 、つまりメッセージングを使用する傾向がある一連のデザインパターンの理論に基づいています。それはこれらのパターンの大部分のすぐに使える実装を提供し、さらにあなたが他のあらゆる種類のシステムと簡単に話すために使用できる200以上の異なる components で出荷されます。 Camelを使用するには、まずPOJOにビジネスロジックを記述し、メッセージを中心とした単純なインターフェイスを実装します。それからCamelのDSLを使って "Routes"を作成します。これはアプリケーションを接着するための一連の規則です。

拡張イントロ

表面的には、Camelの機能は従来のEnterprise Service Bus製品に匹敵します。キャメルルートは通常、サーバー側に存在する「仲介」(オーケストレーション)コンポーネントであると考えていますが、これはJavaライブラリなので埋め込むのは簡単で、クライアント側のアプリケーションにも存在でき、統合に役立ちます。ポイントツーポイントサービス(別名振り付け)とそれ。キャメルルート内のメッセージを処理するPOJOを利用して、簡単に自分のリモートコンシューマプロセスに振り分けることもできます。あなたが独立してワンピースだけを拡大縮小する必要があるならば。あなたのニーズに応じて、Camelを使ってさまざまなリモートトランスポート/プロトコルを通してルートやプロセッサを接続することができます。非常に効率的で高速なバイナリプロトコル、あるいは人間が読みやすくデバッグが簡単なプロトコルが必要ですか。切り替えたい場合はどうしますか? Camelを使うと、これは通常あなたのルートの1行か2行を変更するのと同じくらい簡単で、ビジネスロジックをまったく変更しないことです。あるいは、両方をサポートすることもできます - あなたはキャメルコンテキストで一度に多くのルートを自由に走らせることができます。

単一のプロセスやJVMで動作する単純なアプリケーションには、Camelを実際に使用する必要はありません。やり過ぎるでしょう。しかし、概念的には、自分で書いたコードよりも難しいことではありません。また、要件が変わった場合は、ビジネスロジックとグルーコードを分離することで、長期にわたるメンテナンスが容易になります。キャメルAPIを習得したら、スイスアーミーナイフのようにそれを使用して、さまざまな状況ですばやく適用して、他の方法で作成しなければならないカスタムコードの量を減らすことができます。 Java DSL、たとえば、連携しやすい流暢なAPIなど、1つのフレーバーを習得し、他のフレーバーを簡単に拾うことができます。

あなたがマイクロサービスをやろうとしているならば、全体的なキャメルはぴったりです。問題のドメインについて詳しく知るまでは、プロトコル、トランスポート、およびその他のシステム統合問題に関する多くの困難で「間違えやすい」決定を先延ばしにする可能性があるため、進化アーキテクチャーには非常に貴重なものです。 EIPとコアビジネスロジックに焦点を当て、「正しい」コンポーネントを使用して新しいルートに切り替えるだけで、さらに学ぶことができます。

1
cwash

それはパイプライン接続のようなものです

From---->To

Uの間には、できるだけ多くのチャンネルとパイプを追加できます。蛇口は、データの流れおよび流れをチャネライズするための経路について自動または手動の任意のタイプのものとすることができる。

あらゆる種類や種類の処理をサポートしています。そして同じ処理に対して多くのアプローチがあります。なぜならそれは多くのコンポーネントを持ち、各コンポーネントはその下の異なるメソッドを使っても望ましい出力を提供できるからです。

たとえば、ファイルの移動は、ファイルを移動またはコピーして、フォルダ、サーバー、またはキューからキャメルで行うことができます。

-from-->To
   - from-->process-->to
   - from-->bean-->to
   - from-->process-->bean-->to
   -from-->marshal-->process-->unmarshal-->to

From/to ---- folder、direct、seda、vmは何でも構いません

1

別の観点(より基本的な数学的トピックに基づく)

最も一般的なコンピューティングプラットフォームは[ https://en.wikipedia.org/wiki/Turing_machine] です。

チューリングマシンに問題があります。すべての入出力データはチューリングマシン内にあります。現実の世界では私達のチューリング機械の外に、そして一般的に私達の制御の外のシステムによって支配される入力ソースと出力シンクがあります。すなわち、それらの外部システムは任意の所望のデータスケジューラと任意のフォーマットで自由にデータを送受信する。

質問:各チューリングマシンが自分のピアを入力データのソースまたは出力データのシンクとして見るように、どのようにして独立したチューリングマシンを最も一般的な方法で互いに話させることができますか。

回答:ラクダ、ラバ、BizTalk、または他のESBなど、個別の「物理的」(または仮想ソフトウェア)チューリングマシンを完成させる間のデータ処理を抽象化するものを使用する。

0
earizon