2014-06-19 4 views
0

파일의 첫 번째 줄이 메타 데이터 인 데이터 파일을 처리하려면 낙타를 설치해야하며 수백만 줄의 실제 데이터가 필요합니다. 메타 데이터는 데이터가 처리되는 방법을 나타냅니다. 내가 찾는 것은 다음과 같다 :apache camel을 사용하여 파일의 메타 데이터를 기반으로 데이터 처리

첫 번째 줄 (메타 데이터)을 읽고 (메타 데이터로) 채우기 -> 2. 한 번에 1000 줄의 데이터를 참조 할 데이터 프로세서로 보낸다. 1 단계에서 빈에

Apache Camel에서 가능합니까?

답변

0

예.

예 아키텍처는 다음과 같이 보일 수 있습니다

당신은 설정 (각 개별 파일의 위치를 ​​사용하는 어떤 식별자 또는) 파일 이름으로 채워 할 수있는 간단한 큐를 할 수
  1. .
  2. 대기열에서 메시지 변환기 bean을 통해 라우트 할 수 있습니다. 메시지 변환기 Bean은 파일의 첫 번째 행에있는 메타 데이터가 들어있는 POJO로 파일 이름에 대한 요청을 변환합니다.
  3. (여기서 몇 가지 옵션이)
      출력 또는 1000 개 라인 세트로부터 생성 된 결과 데이터가 필요로하는지 여부에 따라 달라진다 1000 개 행 세트를 처리하는 접근 방식은 하나의 메시지로 재구성하고 처리 할
    • 나중에 다시. 그렇다면 메시지 생성자/소비자, 메시지 집합자 및 라우터로 구성된 구성된 메시지 프로세서를 구현할 수 있습니다. 메시지 생성자/사용자는 step2에서 생성 된 메타 데이터로 POJO를 수신하고 파일의 모든 행을 처리하는 데 필요한 많은 새 요청이있을 때 대기열에 넣습니다. 라우터는이 큐에서 처리 파이프 라인을 통해 메시지 수집기로 라우팅합니다. 통합되면 모든 중요한 데이터가 포함 된 단일 통합 메시지를 통해 원하는 작업을 수행 할 수 있습니다.
    • 대신 각 1000 줄 집합을 독립적으로 처리 할 수 ​​있고 다시 가입 할 필요가없는 경우 메시지를 일회용으로 집계 할 필요가 없습니다. 대신 라우터를 사용하여 2 단계에서 프로듀서/소비자로 라우팅 할 수 있습니다. 위에서와 같이 각 파일에 대해 필요한 새 요청 수를 줄입니다. 마지막으로, 라우터는이 최종 대기열에서 처리를 수행 할 소비자로 라우팅합니다.

당신이 다루는 많은 양의 데이터를 가지고 있기 때문에, 가능성들이 큐에 배치되고, 특히, 메시지를 통해 데이터의 약 1,000 라인 그룹을 통과하기 어려울 것 (당신이 돈 ' 기억이 부족하다). 특정 요청이있는 파일의 행을 식별하는 데 사용할 수있는 표시기 유형을 전달한 다음 필요할 때 1000 행을 분석하는 것이 좋습니다. 특정 행의 파일에 대한 바이트 수를 계산 한 다음 파일 판독기의 skip() 메소드를 사용하여 요청이 Bean에 도달 할 때 해당 행으로 점프하는 등 여러 가지 방법으로이 작업을 수행 할 수 있습니다 그것을 처리합니다.

+0

감사 : 여기

내가 위에서 언급 한 엔터프라이즈 통합 패턴을 설명하는 아파치 낙타의 웹 사이트에서 제공되는 일부 자원입니다 상세한 답변을! 제가 확인하겠습니다! – user3385957

관련 문제