2017-03-08 1 views
0

私は、ファイルを消費し、それを分割ルートを持っている:(トークン化する式を渡し)

from("file:etc.") 
.split(body().tokenize("\n", 100, false)).streaming() 

二番目のパラメータが一定の100に設定されているが、それは警戒持つ方法は上のベースがあり、ファイル。

.split(body().tokenize("\n", simple("...pull header value..."), false)) 

しかし、トークン化を()整数ではなく、式を必要とします。たとえば、ちょうど私は、ヘッダーに値を設定することができ、そして私は、やることができれば、それはクールになる「分割」を打つ前に、 。

私が望むことを達成するためのすてきな方法がありますか?「グループ」の価値を変えますか?

答えて

3

tokenizeメソッドに式を渡すことはできませんでした。しかし、あなたは次のように行うことができます。

.split().method("mySplitterBean", "splitBody") 

は全体の交換を渡し、その後、あなたはヘッダとプロパティにアクセスすることができます。 ストリーミングモードpojoの下の例を参照してください。 http://camel.apache.org/splitter.html

+1

はい、メソッドを呼び出す必要があり、そのメソッドから、必要な数の要素でボディを分割するイテレータを作成できます。例えば、org.apache.camel.util.GroupIteratorのインスタンスを作成することができます。これは、トークナイザが行うことです –