2013-08-21 2 views
0

쿼츠 폴러를 사용하여 FTP 종단점을 폴링하지만, 폴러가 실행될 때 주어진 경로 또는 디렉토리에서 둘 이상의 파일을 선택하지 않으면 문제가 발생합니다. 하나의 파일. 폴러가 시작될 때 모든 파일을 어떻게 픽업 할 수 있습니까? ?뮬 석영 폴링 FTP 종단점

미리 감사드립니다.

답변

0

쿼츠 폴링 엔드 포인트 메시지 소스는 매 번 발생시킬 때마다 단일 뮬 이벤트를 처리하도록 설계되었으므로 의도적으로 파일 만 사용합니다.

이 코드는 bug으로보고되었지만 코드를 보면 기능 향상 요청으로 분류해야합니다.

다른 동작을 얻으려면 사용자 지정 구성 요소를 직접 작성하여 ftp에서 모든 파일을 검색하거나 ftp 전송 자체에 의존해야합니다. 저도 같은 문제가 발생하고이 별도의 흐름을 사용하여 해결 한

1

HTH. 또한 사용자 정의 수신자는 원격 파일의 삭제를 피하기 위해 사용되고 작업 완료를 알리는 Java 구성 요소는 아래 플로우를 참조하십시오.

<ftp:connector name="ftp-connector" passive="true" streaming="true" binary="true"> 
    <service-overrides messageReceiver="app.NonDeletingFtpMessageReceiver" /> 
</ftp:connector> 

<ftp:endpoint name="ftp-fetch" connector-ref="ftp-connector" 
    host="${pr.ftp.host}" port="${pr.ftp.port}" path="${pr.ftp.remotePath}" 
    user="${pr.ftp.user}" password="${pr.ftp.password}"> 
    <file:filename-wildcard-filter pattern="${pr.ftp.filePattern}" /> 
</ftp:endpoint> 

<quartz:endpoint name="quartz-batch" jobName="cron-job" 
    cronExpression="${pr.ftp.cron}" responseTimeout="${pr.ftp.timeout}"> 
    <quartz:event-generator-job /> 
</quartz:endpoint> 


<flow name="ftp-scheduler-flow" doc:name="ftp-scheduler-flow"> 
    <inbound-endpoint ref="quartz-batch" /> 
    <echo-component /> 
    <flow-ref name="ftp-process-fetch-flow" /> 
    <component class="app.FTPFetchHandler" /> 
</flow> 

<flow name="ftp-process-fetch-flow"> 
    <inbound-endpoint ref="ftp-fetch" /> 
    <expression-filter evaluator="header" 
     expression="originalFilename!=null" /> 
    <file:outbound-endpoint path="${pr.ftp.localPath}" 
     responseTimeout="${pr.ftp.timeout}" outputPattern="#[header:originalFilename]" /> 
</flow>