2014-08-29 3 views
2

안녕하세요. Apache Camel을 배우면서 ID를 기반으로 두 개의 XML 파일을 결합하고 결과 파일을 새 위치로 이동시키는 매우 간단한 서비스를 만들려고합니다. 디렉토리에 여러 개의 파일이 있으므로 ID를 기준으로 필터링해야합니다.Apache Camel Enricher

클라이언트 XML :

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

및 주소 XML :

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

그래서 나는 클라이언트 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> 

내가 그리 게이터가 (정말 내가 원하는) 디렉토리에있는 모든 XML 파일을 결합 할 이해하는 것과, 수집기 및 enrichers에 대해 읽어 봤는데 및 enricher 다른 서비스하지만 어떻게에서 리소스를 추가 ID를 기반으로 필터를 적용하고 XML 구조에 추가합니다.

감사합니다. 죄송합니다. 아마도 이것이 정말 기본적인 것일뿐입니다.

+0

카멜이 작동하는 방식 때문에, 이것은 사소하지 않습니다. 첫 번째 질문은 경로를 시작하기 위해 무엇이 트리거 될 것입니까? 일반적으로 어떤 종류의 방아쇠 (대기열, 타이머, 새 파일은 디렉토리 등의 메시지)가 필요합니다. 프로그램 흐름이 어떻게 보이는지 분명하지 않습니다 (나에게). –

+0

이것은 학습 목적을위한 것이므로 명령 줄에서 경로를 시작하고 일부 파일을 이동하고 결합하는 것입니다. – arduima

답변

0

내가 아직 모르겠지만 문제가 해결 되었다면 Aggregator에서 Camel의 논리를 구현할 수있는 방법이 있습니다. 이전 교환 및 새 교환으로 수행 할 작업 . 이 경우 2 개의 교환 ID를 가져 와서 일치시킬 수 있습니다. 일치되면 마샬링되지 않은 노드 (도시)를 가져 와서 부모 xml에 추가 할 수 있습니다.