2017-10-18 113 views
0

我想通過sftp從兩個單獨的目錄將文件加載到一個本地文件夾中。所以,我有兩個入站通道適配器這樣的:Sftp入站通道適配器:重複消息

<bean id="lastModifiedFileFilter" class="com.test.sftp.SftpLastModifiedFileListFilter"> 
    <constructor-arg name="age" value="100"/> 
</bean> 

<int:poller id="fixedRatePoller" fixed-rate="100" 
      time-unit="SECONDS"/> 

<int-sftp:inbound-channel-adapter id="inbound1" 
            session-factory="sftpSessionFactory" 
            auto-create-local-directory="true" 
            delete-remote-files="true" 
            remote-directory="/remote-folder1" 
            filter="lastModifiedFileFilter" 
            local-directory="/local-folder" 
            channel="nullChannel"> 
    <int:poller ref="fixedRatePoller"/> 
</int-sftp:inbound-channel-adapter> 

<int-sftp:inbound-channel-adapter id="inbound2" 
            session-factory="sftpSessionFactory" 
            auto-create-local-directory="true" 
            delete-remote-files="true" 
            remote-directory="/remote-folder2" 
            filter="lastModifiedFileFilter" 
            local-directory="/local-folder" 
            channel="nullChannel"> 
    <int:poller ref="fixedRatePoller"/> 
</int-sftp:inbound-channel-adapter> 

再舉例來說,如果一個名爲「test.csv」成爲「遠程文件夾1」我在日誌中以下消息新的文件:

INFO Created message: [GenericMessage [payload=local-folder/test.csv, headers={id=bb76252a-e826-579d-b0e1-cab55a7cc957, timestamp=1508242673896}]] [task-scheduler-6][FileReadingMessageSource] 
INFO Created message: [GenericMessage [payload=local-folder/test.csv, headers={id=a76de653-f805-8add-1e02-924d0915a18c, timestamp=1508242673962}]] [task-scheduler-2][FileReadingMessageSource] 

它看起來很奇怪,我不知道爲什麼每個文件有兩條消息。也許我配錯了嗎?有人可以解釋這種行爲?

回答

0

對,您在這裏感到困惑,因爲您有兩個用於同一本地目錄的輪詢通道適配器。所以,其中一個通道適配器從SFTP下載文件並從其本地副本發出消息。但同時我們有第二個輪詢適配器爲同一本地目錄。沒錯,這個遠程目錄沒有任何作用,但是本地文件在這裏,並且它被再次拾取。

您應該考慮使用不同的本地目錄或使用local-filter不要從另一個通道適配器「竊取」文件。

+0

感謝您的解釋! 我一般想要的是通過sftp將文件遞歸複製(包括子目錄)從遠程服務器到本地目錄。只需複製,無需進一步處理。 有沒有任何解決方案來做到這一點與春季整合?我在文檔中沒有發現任何內容。你能勸我嗎? –

+0

真的嗎? 'MGET'如何:https://docs.spring.io/spring-integration/docs/4.3.12.RELEASE/reference/html/sftp.html#sftp-outbound-gateway? –

相關問題