2012-04-16 12 views
1

私はラクダのDSLのプロセッサーリファレンスを通過するときに操作されるメッセージにいくつかのヘッダーを設定しようとしています。しかし、最初に私が持っているのは、交換機からメッセージを読み、ヘッダーを取得してログに記録することになっている.onCompletionのプロセッサです。oncompletion()はラクダのDSLで問題となるのですか?

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

答えて

0
ルートに関係なく完了したときに順番が...それは、Exchangeのコピーを使用しなければならない問題ではないはず

...あなたのルートを掲示し、我々は、おそらくのような、より

2

はいあなたが設定する必要があり、物事を助けることができます

  • onCompletion
  • onExceptionを
  • インターセプト
  • のErrorHandler
  • はあなたのルートの開始
  • ポリシー
  • など

を取引しました。しかし、DSLはCamel 2.xが非常にオープンであるため、どこか別の場所で(例えばスタートではなく)設定することができます。しかし、最初にこれを行うことが経験則です。その後、あなたは定期的なルートをしています。

サイドノート:キャメルもグローバルレベル(別名コンテキストのスコープ)の代わりに、ルート上のこれらの種類を設定することができますマインド。たとえば、 コンテキストスコープのエラーハンドラを持つことができます。そして特別なルート をオーバーライドし、ルート特別なエラーハンドラを持っています。

Camel 3.0以降では、DSLをより厳しくしていますので、開始時に設定を強制します。これにより、通常のルートでコードアシスタンスリスト(Ctrl +スペースなど)に表示されるメソッドの数も減ります。それらの構成はもはやリストされなくなるからです。

彼らが現れる理由は、DSLのコーナーストーンである同じベースクラスに浸るからです。現在の2.xの行でこれを打ち切りたくない人もいます。

関連する問題