我在遠程FTP中有一個文件,比如說「abc.txt」。該文件將每分鐘更新一次。我已經配置了我的FTP入站通道適配器,以便每分鐘檢索一次相同的文件。如何在Spring集成FTP入站通道適配器中替換舊的本地文件
這工作正常第一次(即本地目錄仍然是空的)。但是,第二次以後,中間文件abc.txt.writing
不能替代原始的abc.txt
文件。換句話說,abc.txt
(舊版本)和abc.txt.writing
將共存於同一個目錄中。 (使用新版本數據)。 (無錯誤提示)
我是否遇到了錯誤,或者我必須設置一些參數,以便先刪除舊版本的文件,以便abc.txt.writing
可以成功重命名。
<bean id="ftpSessionFactory"
class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory"
p:host="127.0.0.1"
p:port="21"
p:username="myusername"
p:password="mypassword">
<bean id="cachingSessionFactory" class="org.springframework.integration.file.remote.session.CachingSessionFactory">
<constructor-arg ref="ftpSessionFactory" />
<constructor-arg value="1" />
<property name="sessionWaitTimeout" value="1000" />
</bean>
<int-ftp:inbound-channel-adapter id="myChannel"
channel="nullChannel"
session-factory="cachingSessionFactory"
filename-pattern="abc.txt"
remote-directory="/"
preserve-timestamp="true"
local-directory="c:/temp">
<int:poller cron="15 * * * * ?" max-messages-per-poll="1" />
</int-ftp:inbound-channel-adapter>
c:\temp> dir /a
06/23/2017 11:44 AM 840,000 abc.txt
06/23/2017 11:45 AM 840,000 abc.txt.writing
如何使用'int-ftp:outbound-channel-adapter'而不是'int-ftp:inbound-channel-adapter'?因爲'int-ftp:outbound-channel-adapter'有一個屬性'mode =「REPLACE」',使用它你可以得到你想要的。條件是您應該使用彈簧集成版本4.1或更高版本。 –
我正在使用SI 4.3.10。我正在從FTP下載文件並在下游組件中本地處理它(我沒有在上面的代碼片段中發佈下游組件的進程代碼)。 FTP出站通道適配器在這種情況下不起作用。 – user3544765
也許您的下游代碼正在使用舊文件,以防止重命名操作成功。您也可以在下游處理中刪除該文件。 –