2016-08-16 66 views
1

到目前爲止,我的經驗告訴我,消息中的身體總是隨着任何處理而改變。所以現在我總是處理數據,最終結果總是出現在我可以用於進一步處理的身體上。在駝峯範圍外傳遞身體信息

目前我遇到一些奇怪的事情 - 或者,不奇怪的事,但我沒有使用。

我使用下面的路由

<route> 
    <from uri="activemq:queue:add"/> 
    <split> 
    <simple>${body}</simple> 
    <bean ref="pool" method="add(${body.getId},${body.getText})"/> 
    <log loggingLevel="INFO" message="GOOD BODY ${body}"/> 
    </split> 
    <log loggingLevel="INFO" message="BAD BODY of type of argument of add method ${body}"/> 
</route> 

,我想至少訪問,因爲它是在良好的身體記錄中顯示add方法的結果,但最後身體後來由於某種原因而與交換調用方法add的原始類型的參數。

我在這裏工作的分裂ArrayList的,但無論如何,最後我需要一個條目只是一個結果。此外,我需要使用add方法添加列表中的所有對象,所以我無法僅使用單個條目。

我怎樣才能通過「內部」處理的結果通過它外面回來給發出呼叫的路線?

回答

2

分割之後,如後</split>駱駝默認使用被髮送到分離器的原始消息。

如果你想使用別的東西,然後用aggregationStrategy上分器打造你想要的信息,例如最後的分裂消息或別的東西。

查看更多細節駱駝文檔中:http://camel.apache.org/splitter

+0

我打得有點用'aggregationStrategy'和使用'UseLatestAggregationStrategy'有一些很簡單的'correlationExpression',但最後我不得不把它傳遞給一些隊列/孩子 - 我不想這樣做 - 我想從原始路線返回聚合部分到「調用者」。有什麼技巧可以用來覆蓋InOut模式,而不是將它傳遞給新端點? –