1

camel DSL のプロセッサ参照を通過するときに操作されるメッセージにいくつかのヘッダーを設定しようとしています。ただし、私が最初に持っているのは、交換からメッセージを読み取り、ヘッダーを取得してログに記録することになっている .onCompletion 用のプロセッサです。

それは DSL の最後に来る必要がありますか? 最終的な .process() プロセッサは、コードの残りの部分で追加したすべての新しいヘッダー値を確認できるようですが、.onCompletion でそれらをすべてログに記録すると、それらのヘッダーの値は null になります。メッセージや交換などの古いバージョンがあるようです。他になぜこれが起こっているのでしょうか?

4

2 に答える 2

3

はい、次のように構成する必要があります

  • 完了時に
  • onException
  • 傍受
  • errorHandler
  • 取引
  • ポリシー

あなたのルートの始まりに。ただし、DSLはCamel 2.xが非常にオープンであるため、一部の場所でこれを他の場所で構成できます(たとえば、最初ではありません)。ただし、経験則では、これを最初に実行します。そしてその後、あなたは通常のルートです。

補足: Camelでは、ルートではなくグローバルレベル(別名コンテキストスコープ)でこれらの種類を構成することもできます。たとえば、コンテキストスコープのエラーハンドラを使用できます。そして、特別なルートのオーバーライドでのみ、ルートの特別なエラーハンドラーがあります。

Camel 3.0以降では、DSLをより厳密にするため、最初に構成を適用します。これにより、通常のルートでコードアシスタンスリストに表示されるメソッドの数も減ります(たとえば、Ctrl +スペースを押す)。これらの構成はリストされなくなります。

それらが表示される理由は、DSLの基礎となる同じ基本クラスを継承しているためです。そして、一部の人々が影響を受ける可能性があるため、現在の2.xラインでこれを壊したくありません。

于 2012-04-17T10:57:24.607 に答える
0

順序は関係ありません...ルートが完了したときにExchangeのコピーを使用する必要があります...ルートを投稿してください。おそらくもっと役立つでしょう

于 2012-04-16T22:17:17.290 に答える