2014-08-29 101 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中。