Apache camel 阿帕奇骆驼浓缩器

Apache camel 阿帕奇骆驼浓缩器,apache-camel,Apache Camel,大家好,我正在学习ApacheCamel,并尝试创建一个非常简单的服务,它根据一个ID组合两个XML文件,并将结果文件移动到一个新位置。目录中有多个文件,因此我需要根据ID对其进行筛选 客户端XML: <?xml version="1.0" encoding="UTF-8"?> <client> <id>2</id> <firstName>Clark</firstName> <lastName>Ken

大家好,我正在学习ApacheCamel,并尝试创建一个非常简单的服务,它根据一个ID组合两个XML文件,并将结果文件移动到一个新位置。目录中有多个文件,因此我需要根据ID对其进行筛选

客户端XML:

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

2.
克拉克
肯特
470
和地址XML:

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

3.
2.
纽约
因此,我想将城市元素从地址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>

2.
克拉克
肯特
470
纽约
我一直在阅读有关聚合器和enricher的内容,据我所知,聚合器将合并目录中的所有XML文件(不是我真正想要的),enricher将添加来自另一个服务的资源,但我如何根据id进行筛选并将其添加到XML结构中,而不仅仅是在最后


谢谢,对不起,这可能真的很基本,我只是不知道。

我不知道,如果你已经解决了这个问题,但是,你的问题的答案是-
聚合器在Camel中有一个方法,您可以在其中实现您的逻辑,以及如何处理旧交换和新交换。在这种情况下,您可以获取2个交换的ID并进行匹配。匹配后,您可以获取未经编组的节点(城市)并将其添加到父xml。

由于Camel的工作方式,这一点并不简单。第一个问题是,什么会触发你的路线开始?通常,您需要某种触发器(队列中的消息、计时器、目录中的新文件等)来告诉Camel启动并执行某些操作。(对我来说)你的程序流程需要是什么样子还不清楚。这是为了学习,所以我只是从命令行开始,移动并合并一些文件。