2014-08-29 162 views
2

嗨,我正在學習Apache Camel,並試圖創建一個非常簡單的服務,它將基於ID的兩個XML文件組合起來,並將生成的文件移動到新的位置。在direcotry中有多個文件,所以我需要根據ID過濾它。Apache Camel Enricher

客戶XML:

<?xml version="1.0" encoding="UTF-8"?> 
<client> 
    <id>2</id> 
    <firstName>Clark</firstName> 
    <lastName>Kent</lastName> 
    <netWorth>470</netWorth> 
</client> 

和地址XML:

<?xml version="1.0" encoding="UTF-8"?> 
<address> 
    <id>3</id> 
    <clients> 
    <clientId>2</clientId> 
    </clients> 
    <city>New York</city> 
</address> 

所以我想給城市元素從XML地址添加到客戶端的XML。

<?xml version="1.0" encoding="UTF-8"?> 
<client> 
    <id>2</id> 
    <firstName>Clark</firstName> 
    <lastName>Kent</lastName> 
    <netWorth>470</netWorth> 
    <city>New York</city> 
</client> 

我一直在閱讀有關聚合和濃縮商,從我瞭解的聚合將結合所有XML目錄中的文件(不是我真正想要什麼)和富集會從其他服務,但如何添加資源是否根據id過濾掉並將其添加到XML結構中,而不僅僅是結尾。

謝謝,對不起,這可能是非常基本的,我只是不知道它。

+0

由於駱駝的工作方式,這不是微不足道的。第一個問題是,什麼會觸發你的路線開始?您通常需要某種觸發器(隊列中的消息,計時器,目錄中的新文件等)告訴駱駝走開並做些事情。目前還不清楚你的程序流程需要什麼樣子。 – 2014-09-01 10:51:49

+0

這是爲了學習的目的,所以它真的只是我從命令行開始路由並移動和合並一些文件。 – arduima 2014-09-01 14:48:44

回答

0

我不知道,如果你已經解決了這個問題,但是你的問題的答案是 - Aggregator在駱駝中有方法,在那裏你可以實現你的邏輯,如何處理舊交換和新交換。在這種情況下,您可以獲得2個交易所的ID並匹配它。一旦匹配,您可以將取消編組的節點(城市)並將其添加到父級xml中。