2

私は Apache Camel に頭を悩ませようとしています。今朝、Camel のオンライン ドキュメントと Javadoc の両方を読んだ後、答えが見つからないように見える質問がいくつかあります。

  1. すべてのエンドポイントが消費者または生産者 (またはその両方) であるというのは本当ですか? すべてのプロセッサがエンドポイントであるというのは本当ですか? プロセッサーではないエンドポイントはありますか?
  2. メッセージ ヘッダーと Exchange の違いは何ですか? 交換は「メッセージ コンテナー」と見なされますが、それはヘッダーに含まれるメタデータとどう違うのでしょうか?
  3. 独自の Message/Exchange を実装するのは一般的ですか? DefaultMessageもしそうなら、そうすることの例は何で、典型的なものから「逸脱」しDefaultExchangeますか?

前もって感謝します。

4

2 に答える 2

2

まず最初に: Camel in Action という本を読むことをお勧めします。基本的な概念のほとんどが説明されています。オンラインで利用できる無料の最初の章があります。これは、あなたが尋ねる質問の種類を説明していますhttp://manning.com/ibsen/

  1. エンドポイントは、コンポーネントと、アドレスなどのいくつかのコンポーネント固有のオプションを参照します。エンドポイントは、(コンポーネントに応じて) コンシューマー (例"servlet:path/to/web/service") またはプロデューサー (例"http://localhost/path/to/web/service") またはそれらの両方(例 ) として機能できます"jms:queue:orderQueue"

  2. Camel メッセージにもヘッダーがあります。エクスチェンジはルート全体で存続し、エクスチェンジ プロパティもルート全体で維持されます。Camel のメッセージ ヘッダーは、少し異なる概念です。多くの場合、使用されるコンポーネントに密​​接にマッピングされます。つまり、HTTP エンドポイントはヘッダー (たとえば、COOKIES など) を設定/変更する可能性がありますが、HTTP ヘッダーは交換プロパティに影響を与えません。これらはキャメル ルートおよびキャメル ロジック内でのみ使用されるためです。交換は、例外など、メッセージに固有でない他のものもラップします。

  3. 新しいメッセージの実装を開発することは非常にまれです。DefaultMessage独自のコンポーネント/プロトコルを実装しており、メッセージなどでヘルパー オブジェクトのインスタンスを維持する必要がある場合は、拡張する必要があります。コンポーネントを開発する場合でも、通常は行われません。Exchange のカスタム実装については聞いたことがありません。通常、正当な理由がない限り、これを行うべきではありません。

于 2013-01-07T13:12:23.887 に答える
2

あなたが書いた@DirtyMikeAndTheBoys

すべてのプロセッサがエンドポイントであるというのは本当ですか? プロセッサーではないエンドポイントはありますか?

本当じゃない。Camel 用語の「プロセッサ」は、何らかのパターン (Aggregator、Message Channel、RoutingSlip など) の一部であるコールバックです。プロセッサは、メッセージがルート内を流れているときにメッセージを受け取り、メッセージに対して何かを行います。メッセージはExchange内でラップされます。

エンドポイントは、ルートがメッセージを受信する場所 (コンシューマーエンドポイント) と、処理されたメッセージを送信する場所 (エンドポイントへ) です。そのため、ルートに「from」句がある場合、Camel エンジンは「 from 」句で定義されたエンドポイント インスタンスに関連付けられた「 Consumer 」インスタンスを使用しています。キャメルコンテキストの「from」句に指定されたエンドポイントが表示されるたびに、新しいコンシューマーインスタンスが作成/再利用されるかどうかは、エンドポイントの実装に大きく依存します。

同様に、同じエンドポイントが ' To ' 句で言及されている場合、Producerインスタンスが使用され (作成/再利用)、エンドポイント インスタンスに関連付けられたままになります。

于 2013-01-28T00:50:31.487 に答える