직원, 주소 및 연락처 파일을 병렬로 읽고이를 beanIO 객체로 변환하고 beanIO 객체를 병합하여 전체 employeeDetails 객체를 생성하는 데 사용합니다.Apache Camel : File to BeanIO 및 id 기반의 beanIO 객체
EMP를 파일 :
1 Foo Engineer
2 Bar AssistantEngineer
EMP를 연락 파일 :
1 8912345678 [email protected]
2 7812345678 [email protected]
EMP를 주소 파일 :
1 city1 1234
2 city2 2345
거래소에서 EmployeeDetailsBeanIODataFormat 객체의
예상 출력 :
1 Foo Engineer [email protected] city1 1234
2 Bar AssistantEngineer [email protected] city2 2345
012 3,516,
나는 다음과 같은 경로가
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");
각 파일이 객체에게
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}");
출력은 콩이 제대로 개체 기록을 beanio로 변환되어 있습니다.
이제 개체를 병합하여 EmployeeDetails 개체를 만들어야합니다. 누군가가 어떻게하는지 알려 줄 수 있습니까? 나는이 글을 읽었으며 Aggregators가이 작업을 수행하는 데 사용될 수 있지만 접근법에는 확신이없는 것처럼 보입니다.
샘플에 대한 자세한 내용은 도움이 될 것입니다. 제안을 환영합니다. 사원 ID를 기반으로 파일을 병합하고 그 파일을 사용하여 개체를 만드는 것이 좋습니다. IO가 성능을 희생하므로 병합 된 파일을 디스크에 쓰고 싶지 않습니다.
미리 감사드립니다.
감사 개체 것 대답을 위해, 나는 이것을 시도하고 당신에게 알려줄 것입니다. – jack
잘 작동하지만 EmployeeDetails가 하나씩 인쇄됩니다. 하지만 Exchange 최종본에 EmployeeDetails []가 필요하므로 다음 경로에서 최종 목록을 처리하고 Avro 형식으로 변환 할 수 있습니다. 다시 집계해야합니까? ...... completionSize (3) .to ("seda"formList ")?이 작업과 비슷하거나 모든 메시지를 그룹화하는 옵션이 있습니다. – jack
다시 집계 할 수 있습니다 (다른 질문 임). (2) 여기서 2는 ID 수입니다. – ltsallas