2017-03-08 27 views
0

我已經消耗一個文件並分割其的路線:傳遞的表達式來標記()

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

的第二個參數被設置爲一個恆定100有沒有辦法把它警惕,基於文件。例如,之前我打的「分裂」我可以設置在標題中的值,它會很酷,如果我能那麼做:

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

但是,令牌化()需要一個整數,而不是一個表達式。

有沒有一種簡潔的方式來實現我想要的:改變'組'的價值?

回答

3

我還沒有看到您可以將表達式傳遞給您的標記化方法。但是,您可以這樣做:

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

通過整個交換,然後您可以訪問標題和屬性。 在流模式pojo下查看示例; http://camel.apache.org/splitter.html

+1

是的,你需要調用一個方法,然後從該方法中創建一個迭代器,它可以根據需要在元素數量中分割正文。例如,你可以創建一個org.apache.camel.util.GroupIterator的實例,它就是那個tokenizer會做的 –