2016-04-29 4 views
1

私は、ダイナミックルーティングのコンセプトと消費者のルールに苦しんでいます。ダイナミックな "エンド"エンドポイントとエクスチェンジはラクダでどのように機能しますか?

私は交換データを持つルートを持っていて、 "差出人"エンドポイントの別のルートで交換のヘッダーを使用したいとします。

私はそれがこのようなものに見えると思います:

ルート1:

​​

ルート2:

from("direct: start")//get the old exchange data 
.from("file:/dir1/?fileName=${header.myHeader}")//start consuming from a different endpoint using old exchange data 
... 
.to("direct: end); 

をので、これらのステップは、右の私には思えるが、私はイムのように感じます交換の汚染の一種。

私には、ダイナミックルーティングを使用していますが、同時に新しいコンシューマを作成しています。つまり、私は新しい交換権を作っていますか?だから、ラクダは残りのルートでどの交換を選んで使用するのかをどうやって知っていますか?

最初は私はおそらくそれらを組み合わせたと思っていましたが、もう少し掘り下げて、既存の交換機に追加するために実際に「豊か」を使用する必要があることがわかりました。

誰かがこの種のシナリオをどのように処理するのか説明できますか?あなたにも素晴らしい例があれば。私は成功したラクダパッケージで1つを探しました。

答えて

4

Content Enricherパターンで「ダイナミック」を達成できます。

はのは、あなたの最初のルートは、このようなインスタンスのヘッダにファイル名を追加するために使用されているとしましょう:

from("timer:trigger?repeatCount=1") 
.routeId("define-file-name") 
.setHeader("myHeader", constant("file.txt")) 
.to("direct:start"); 

次に2番目のルートは、このような交換ヘッダからの情報を使用して、そのファイルをポーリングすることができます。

from("direct:start") 
.routeId("poll-file") 
.pollEnrich().simple("file://dir1?fileName=${in.header.myHeader}").timeout(10000) 
.log("${body}"); 
+0

ポールリッチラクダのバージョンは特定ですか?私はそれについて読んで、私はそうは思わない。しかし、私はそのようなメソッドのエラーを取得していません。 – JustBlossom

+0

Camel 2.16.0に動的URIを使用しました。それ以前は、pollEnrichで現在の交換データを使用することはできません。 – jnupponen

+0

大丈夫です。それがうまくいかない理由です。私は2.15.5を使っています。私はそれを私の質問に入れるとは思わなかった。ごめんなさい。あなたの時間をありがとう。 – JustBlossom

関連する問題