従業員、住所、および連絡先ファイルを並行して読み取り、それを beanIO オブジェクトに変換し、beanIO オブジェクトをマージして完全な employeeDetails オブジェクトを生成するユースケースがあります。
emp ファイル:
1 Foo Engineer
2 Bar AssistantEngineer
従業員連絡先ファイル:
1 8912345678 foo@org.com
2 7812345678 bar@org.com
従業員住所ファイル:
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 がパフォーマンスを犠牲にするためです。
前もって感謝します。