我有一个用例来并行读取员工、地址和联系文件并将其转换为 beanIO 对象并合并 beanIO 对象以生成完整的employeeDetails 对象。
企业档案:
1 Foo Engineer
2 Bar AssistantEngineer
Emp 联系文件:
1 8912345678 foo@org.com
2 7812345678 bar@org.com
Emp 地址文件:
1 city1 1234
2 city2 2345
Exchange 中 EmployeeDetailsBeanIODataFormat 对象的预期输出:
1 Foo Engineer foo@org.com city1 1234
2 Bar AssistantEngineer bar@org.com city2 2345
我有以下路线
from("file://C:/cameltest/employee.txt").to("seda:beanIO");
from("file://C:/cameltest/employeeContact.txt").to("seda:beanIOContact");
from("file://C:/cameltest/employeeAddress.txt").to("seda:beanIOAddress");
每个文件都转换为 beanio 对象
BeanIODataFormat empFormat = new BeanIODataFormat("beanIO.xml","emp");
BeanIODataFormat empContactFormat = new BeanIODataFormat("beanIO.xml", "empContact");
BeanIODataFormat empAddressFormat = new BeanIODataFormat("beanIO.xml", "empAddress");
from("seda:beanIO").unmarshal(empFormat).log("body - ${body}");
from("seda:beanIOContact").unmarshal(empContactFormat).log("Contact body ${body}");
from("seda:beanIO").unmarshal(empAddressFormat).log("Address body - ${body}");
输出正确记录了 bean 对象。
现在我需要合并对象以形成 EmployeeDetails 对象。有人可以让我知道该怎么做吗?我读过,似乎聚合器可以用来做这项工作,但不确定这种方法。
任何有关此示例的想法都会有所帮助。欢迎提出建议,是否建议先根据员工 ID 合并文件并从中创建一个对象?在这种情况下,我不想将合并的文件写入磁盘,因为 IO 会降低性能。
提前致谢。