29

apache camel では、交換プロセッサから別のプロセッサに値を渡すための最良の方法 (およびその理由) は次のとおりです。

  • 交換ヘッダーに格納する
  • setPropertyルートの構築中にメソッドを使用します。
  • 別の方法..
4

4 に答える 4

60

Ben と Petter が言及していない違いの 1 つは、Camel でメッセージが処理されている間、プロパティが安全に保存されることです。対照的に、ヘッダーはメッセージ プロトコルの一部であり、ルーティング中に伝播されない場合があります。たとえば、JMS には、ヘッダーなどとして保存できるものに制限があります。

Camel in Action book の無料の第 1 章を読むことをお勧めします。これは、Exchange、Message などの Camel の概念をカバーしているためです。

于 2012-04-27T13:52:04.953 に答える
30

プロパティとヘッダーはほとんど同じです。ただし、ヘッダーは、Jms などの特定のコンポーネントのプロトコル固有のヘッダーとの間で変換されます。そう、

  • ルート内のメタデータ: プロパティ
  • 外部との間のメタデータ: ヘッダー
于 2012-04-26T21:58:06.867 に答える
23

Exchangeはプロセッサ間で受け渡されます。これには、プロパティ、IN メッセージ、およびオプションの OUT メッセージが含まれます。これらはそれぞれオブジェクト データを格納できますが、一般的には次のとおりです。

  • メッセージに関する一般的なメタデータには Exchange プロパティを使用します (あまり使用されません)。
  • IN メッセージ ヘッダーを使用して、エンドポイント プロパティを構成するか、メッセージ本文に関するメタデータを取得します (よく使用されます)。
  • メッセージのペイロードに IN メッセージ本文を使用する (最も頻繁に使用される)
  • 処理中に個別の IN メッセージと OUT メッセージを維持する必要がある場合にのみ、OUT メッセージを作成します (デフォルトでは IN のみが使用されます)。

とはいえ、実際には、プロセッサに続いて呼び出されるコンポーネントに依存します。ほとんどの場合、エンドポイントなどを使用するために必要なヘッダーや本文の値がいくつかあります。これらの詳細については、特定のコンポーネント ページを参照してください。

また、交換/メッセージについては、次のページで詳しく説明しています。

http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Exchange.html

http://fusesource.com/docs/router/2.8/prog_guide/MsgFormats-Exchanges.html

于 2012-04-26T16:25:25.950 に答える