web-dev-qa-db-ja.com

Apacheキャメルのプロセッサ間で値を渡す

Apacheキャメルでは、交換プロセッサから別のプロセッサに値を渡すための最良の方法はどれですか(そしてその理由):

  • 交換ヘッダーに保存する
  • ルートの構築中にsetPropertyメソッドを使用する。
  • 別の方法..
25
kgautron

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

  • ルート内のメタデータ:プロパティ
  • 外部とのメタデータ:ヘッダー
27

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

Camel in Actionブックの無料の第1章は、Exchange、メッセージなどのラクダの概念を扱っているため、読むことをお勧めします。

55
Claus Ibsen

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

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

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

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

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

21
Ben ODay

答えはここにあります:

プロパティ:プロパティはマップであり、メッセージヘッダーのように見える場合があります。主な違いはその存続期間です。プロパティは交換の実行中に存在しますが、ヘッダーはメッセージの継続時間に制限されます(メッセージはルーティング中に大幅に変更される可能性があるため、交換の実行中にも変更されます)。キャメル自体は、いくつかのユースケースにいくつかのプロパティを追加する場合があります。

5