以下是我正在嘗試的操作。我要讀有此內容的兩個文件Apache Camel合併來自不同路由的兩個文件
<Person>
<Requestor>Dinesh</Requestor>
</Person>
要做到這一點我創建了一個路線
<route id="getPerson">
<from uri="file:src/main/resources/xml?noop=true"/>
</route>
接下來,我需要閱讀被叫地址另一個文件
<Address>
<City>New York </City>
</Address>
這裏是我的第二條路線
<route id="getAddress">
<from uri="file:src/main/resources/xmlAddress?noop=true"/>
</route>
我如何這兩個XML合併到一個使用富集或聚合,使最終的XML消息看起來像這樣
<Person>
<Requestor>Dinesh</Requestor>
<Address>
<City>New York</City>
</Address>
</Person>
任何想法?我試着按照文檔,但它所說的是發送到一些Web服務的URI。
上面的場景是淡化了我真正想要做的事情。對我來說,真實生活中的情況是這樣做的 - 第1步。讀取一個xml文件, 第2步:調用Web服務並獲取響應。 第3步:合併步驟2的響應和在步驟添加它öXML主體1
EDIT 1:我可以寫自定義AggregatorStartegy類。我寫了這樣的事情
public class AggregationStrategy implements org.apache.camel.processor.aggregate.AggregationStrategy{
@Override
public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
newExchange.getOut().setBody("<all>"
+ oldExchange.getIn().getBody(String.class)
+ newExchange.getIn().getBody(String.class)
+ "</all>");
return newExchange;
}
}
什麼我掙扎是怎麼寫的寫的Spring XML,我可以告訴這是我的郵件或文件1+消息或文件2,去加入他們的行列。這裏是我的實際context.xml中看起來像
<camelContext id="myCamel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="file:src/main/resources/xmlPerson?noop=true"/>
<camel:to uri="direct:enrichMessage"></camel:to>
</route>
<route >
<from uri="file:src/main/resources/xmlAddress?noop=true"/>
<log message="**************RESPONSE FROM CATASK DSS:: \n ${body}" id="log_output"/>
<camel:to uri="direct:enrichMessage"></camel:to>
</route>
<route id="enrichMessage">
<from uri="direct:enrichMessage"/>
<camel:enrich strategyRef="aggregationBean" />
<log message="**************MERGED RESPONSE :: \n ${body}"/>
</route>
那麼究竟哪裏web服務來發揮作用? – Ralf
例如.enrich(「http://serviceA.com?xxx」).enrich(「http:// serviceB?xx」)。這是一個例子。 http://www.andrejkoelewijn.com/blog/2010/06/13/a-composite-rest-service-using-camel/。不管我得到什麼解決方案,我只需要將兩個文件或兩個消息合併爲一個。我實際上修改了這個帖子來解釋我的描述。我的實際情況是 - 第1步。讀取xml文件,第2步:調用Web服務並獲取響應。步驟3:合併步驟2中的響應並將其添加到步驟1中的Xml體中。 –
編輯了問題標題。 –