2017-10-10 1 views
1

전 세계적으로 정의 된 FTP Camel 경로가 있습니다. here 설명 된대로,재사용 낙타 FTP ​​경로

exchange.getContext().startRoute("downloadRoute"); 

다른 스레드에서 중지 : 그것은 다른 경로에서 시작

.process(new Processor() { 
    Thread stop; 
    @Override 
    public void process(final Exchange exchange) throws Exception { 
     stop = new Thread() { 
      @Override 
      public void run() { 
       try { 
        log.info("Stopping route"); 
        exchange.getContext().stopRoute("downloadRoute"); 
       } catch (Exception e) { 
       } finally { 
        latch.countDown(); 
       } 
      } 
     }; 
     stop.start(); 
    } 
}) 

그것은 잘 작동합니다. 이제이 경로를 다시 시작하겠습니다. 폴더에 새 파일을 추가하고 다시 다운로드하거나 다운로드 한 파일을 다시 다운로드한다고 가정 해보십시오.
그래서 같은 명령으로이 경로를 다시 시작하지만 파일을 다운로드하지는 않습니다. 경로의 어딘가에 다운로드 한 것으로 표시되어 있기 때문에 단순히 파일을 보지 못합니다. 반면 낙타 환경에서이 경로를 제거한 다음 다시 추가하고 시작하면 작동합니다. 파일을 다시 다운로드합니다.

그래서 새로운 경로로 시작하기 위해 기존 경로를 재사용 (시작 - 정지 - 시작)하는 방법에 대한 질문은 무엇입니까?

+0

시도해주세요. https://stackoverflow.com/questions/18211918/camel-ftp-only-run-once –

+0

아니요, 경로를 중지 할 수 있습니다. 나는 새로운 것으로 다시 시작할 수 없다. – streetturtle

답변

1

일반적으로 이것은 아파치 카멜의 오용이라고 생각합니다. 경로는 응용 프로그램 내에서 반복적으로 시작되거나 중지되지 않습니다. Camel의 경로는 일반적으로 정의 된 다음 응용 프로그램 시작시 시작된 다음 응용 프로그램이 중지 될 때까지 중지되지 않습니다.

file consumer 기반 경로 (파일, FTP, SFTP 등)를 사용하여 필요에 따라 파일을 다시 다운로드하려는 경우 정확한 방법은 .camel 디렉토리에서 파일을 옮기는 것입니다 (다운로드 된 파일은 기본적으로 파일을 모니터링하여 모니터링되는 디렉토리로 다시 이동합니다. 필요한 경우 프로그램을 통해이 작업을 쉽게 수행 할 수 있습니다.

이렇게하면 Camel에서 파일을 다시 다운로드해야합니다. 그런 다음 Camel은 완성되면 .camel 디렉토리에 다시 배치합니다. 원하는 경우 파일 구성 요소 플래그 (.camel이 기본값 임)를 사용하여 .camel과 다른 디렉토리를 사용할 수도 있습니다.