1

従業員、住所、および連絡先ファイルを並行して読み取り、それを 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 がパフォーマンスを犠牲にするためです。

前もって感謝します。

4

1 に答える 1