복붙노트

[SPRING] Spring 통합 ftp 인바운드 어댑터를 사용하여 처리 된 파일을 다른 디렉토리로 이동

SPRING

Spring 통합 ftp 인바운드 어댑터를 사용하여 처리 된 파일을 다른 디렉토리로 이동

추가 처리를 위해 파일을 가져 오기 위해 ftp 인바운드 어댑터를 사용하여 로컬 디렉토리를 폴링하려고합니다. 파일을 다른 로컬 디렉토리로 옮기고 원본 파일에서 삭제하려고합니다. 그것을 성취 할 수있는 방법을 얻지 못했습니다. 여기 내가 지금까지 가지고있는 것이있다.

<int-ftp:inbound-channel-adapter id="ftpInbound"
    channel="ftpChannel" session-factory="ftpClientFactory"
    filename-pattern="*.xml" auto-create-local-directory="false"
    delete-remote-files="false" remote-directory="/" local-directory="//C://FBS//testmq">
    <int:poller fixed-rate="20000" />
</int-ftp:inbound-channel-adapter>

<int:channel id="ftpChannel">
    <int:queue />
</int:channel>

해결법

  1. ==============================

    1.의사 트랜잭션 관리자와 트랜잭션 동기화를 사용하십시오. 문서의 파일 예제를 참조하십시오. 다음은 문서의 해당 섹션에있는 구성입니다.

    의사 트랜잭션 관리자와 트랜잭션 동기화를 사용하십시오. 문서의 파일 예제를 참조하십시오. 다음은 문서의 해당 섹션에있는 구성입니다.

    <int-file:inbound-channel-adapter id="inputDirPoller"
        channel="someChannel"
        directory="/foo/bar"
        filter="filter"
        comparator="testComparator">
        <int:poller fixed-rate="5000">
            <int:transactional transaction-manager="transactionManager" synchronization-factory="syncFactory" />
        </int:poller>
    </int-file:inbound-channel-adapter>
    
    <int:transaction-synchronization-factory id="syncFactory">
        <int:after-commit expression="payload.renameTo(new java.io.File('/success/' + payload.name))" 
               channel="committedChannel" />
        <int:after-rollback expression="payload.renameTo(new java.io.File('/failed/' + payload.name))"
               channel="rolledBackChannel" />
    </int:transaction-synchronization-factory>
    

    다음 섹션으로 계속 읽으십시오 ...

  2. from https://stackoverflow.com/questions/30151642/moving-processed-files-to-another-directory-using-spring-integration-ftp-inbound by cc-by-sa and MIT license