2016-11-10 1 views
3

응용 프로그램에서 두 개의 별도 경로가 실행 중이며 전체 경로에서 비행중인 총 작업량을 제어하려고합니다.조절을 위해 두 개의 개별 낙타 경로를 함께 연결하는 방법

Route 1: Gzipped file on SFTP --> unzip --> local directory 
Route 2: local directory --> process stuff --> Kafka 

경로 2에 문제가 있거나 작업에 뒤쳐져있는 경우 경로 1이 로컬 디렉토리를 채우고 싶지 않습니다. 처리를 대기중인 로컬 디렉토리에있는 총 파일 수를 어떻게 제한합니까?

(그것이 내가 throttle()에 쉽게 할 수 있습니다 단일 경로했지만, 다른 옵션은 여러 경로의 전체적인 그림을가보고 있습니까? 경우) 수를 확인 어디

답변

3

당신은 사용자 정의 RoutePolicy을 구현할 수 있습니다 디렉토리 및 경우 파일의 X는 다음 경로를 일시 중단하고 낮은 X.보다

는 낙타 문서에서 자세한 내용을 참조하면 다시 재개보다 더 큰 : http://camel.apache.org/routepolicy.html

기존 ThrottlingInflightRoutePolicy 볼 수 있습니다 그것이 영감을 위해 어떻게 구현되었는지.

+0

감사합니다. ThrottlingInFlightRoutePolicy 코드는 특히 RoutePolicySupport를 기본 클래스로 확장하는 데 매우 유용했습니다. 파일 수를 확인하기보다는 파일 시스템을 검사하여 InFlightRepository를 검사하여 Route 2에서 진행중인 작업의 수를 확인했습니다. 어느 방법이든이 방법으로 많은 가능성을 열 수 있습니다. 오후 8시 30 분 P.S. 지난 달 미니애폴리스 투어에서 만나 뵙게되어 반갑습니다! – dustmachine

+0

좋은 해결책을 찾았다는 말을 잘 듣겠습니다. 나는 미네 아 폴리스에서 즐거운 시간을 보냈고 미시시피 강 건너편을 걸을 수있는 이정표였습니다. 그것은 미국을 멀리 멀리 시작한 것을 몰랐습니다. 또한 모든 도시를 연결하는 사람들의 미로가 13 마일이라는 것을 알고 놀라움으로 도시에서 너무 많은 하늘 ​​다리를 볼 것으로 예상하지 않았습니다. 항상 아파치 카멜에 대한 소식을 전하는 즐거움. –

관련 문제