111.11. 로컬 작업 디렉터리 사용
Camel은 원격 FTP 서버에서 소비를 지원하고 파일을 로컬 작업 디렉토리로 직접 다운로드할 수 있습니다. 이렇게 하면 FileOutputStream 을 사용하여 로컬 파일로 직접 스트리밍되므로 전체 원격 파일 내용을 메모리에 읽지 않습니다.
Camel은 파일이 다운로드되는 동안 .inprogress 를 확장자와 함께 원격 파일과 동일한 이름으로 로컬 파일에 저장합니다. 나중에 파일의 이름이 .inprogress 접미사를 제거하도록 변경됩니다. 마지막으로 Exchange가 완료되면 로컬 파일이 삭제됩니다.
따라서 원격 FTP 서버에서 파일을 다운로드하여 파일로 저장하려면 다음과 같은 파일 끝점으로 라우팅해야 합니다.
from("ftp://someone@someserver.com?password=secret&localWorkDirectory=/tmp").to("file://inbox");
위의 경로는 메모리에 전체 파일 콘텐츠를 읽지 않으므로 매우 효율적입니다. 원격 파일을 로컬 파일 스트림으로 직접 다운로드합니다. 다음으로 java.io.File 처리는 교환 본문으로 사용됩니다. 파일 프로듀서는 이 사실을 활용하고 작업 파일 java.io.File 처리에서 직접 작업할 수 있으며 대상 파일 이름에 java.io.File.rename 을 수행할 수 있습니다. Camel이 로컬 작업 파일임을 알고 있으므로, 작업 파일은 어쨌든 삭제해야 하므로 파일 복사 대신 이름을 최적화하고 사용할 수 있습니다.