我有一個條件,我應該通過以下步驟讀取SFTP遠程位置的文件後,遠程SFTP位置移動文件:從SFTP位置Spring集成:處理
閱讀文件說
input
文件夾。處理文件並使用文件的內容調用REST API。
如果調用成功將遙控SFTP文件
archive
文件夾其他遠程SFTP文件移動到文件夾error
。
我想到了兩種方法。我不知道哪一個可能。
首先,將文件從SFTP遠程位置讀取到本地並從遠程刪除。然後調用REST API。根據REST調用的響應,成功或錯誤將文件上傳到遠程文件夾。
其次,將文件從SFTP遠程位置讀取到本地。然後調用REST API。根據REST調用的響應,成功或錯誤將文件上傳到遠程文件夾。
任何人都可以啓發我哪種方法可行和方便嗎?如果您能提及通道適配器,我將不勝感激。
到目前爲止,我可以調用REST API。
<int-sftp:inbound-channel-adapter id="sftpInbondAdapter"
auto-startup="true"
channel="receiveChannel"
session-factory="sftpSessionFactory"
local-directory="${local.dir}"
remote-directory="${sftp.dir.input}"
auto-create-local-directory="true"
delete-remote-files="true"
filename-pattern="*.txt">
<int:poller fixed-rate="60000" max-messages-per-poll="1" />
</int-sftp:inbound-channel-adapter>
<int:channel id="receiveChannel"/>
<int:splitter input-channel="receiveChannel" output-channel="singleFile"/>
<int:channel id="singleFile"/>
<int:service-activator input-channel="singleFile"
ref="sftpFileListenerImpl" method="processMessage" output-channel="costUpdate" />
<int:channel id="costUpdate" />
<int:header-enricher input-channel="costUpdate" output-channel="headerEnriched">
<int:header name="content-type" value="application/json" />
</int:header-enricher>
<int:channel id="headerEnriched" />
<int-http:outbound-gateway
url="${cost.center.add.rest.api}" request-channel="headerEnriched"
http-method="POST" expected-response-type="java.lang.String" reply-channel="costAdded" >
</int-http:outbound-gateway>
<int:publish-subscribe-channel id="costAdded" />
我想移動遠程文件到另一個位置在遠程文件夾一次API調用是評估API調用響應之後的成功。我的問題是如何根據http:outbound-gateway
的響應將遠程文件移動到另一個遠程位置?
對不起,你的場景看起來不錯。你面臨什麼問題?刪除或不刪除遠程文件並不會讓你感興趣,因爲默認情況下'AcceptOnceFileListFilter'就是用於本地文件的。 – 2014-12-03 12:32:11
實際上,我想在評估API調用響應後,將API調用成功後,將遠程文件移動到遠程文件夾中的另一個位置。我的問題是,如何根據「http:outbound-gateway」的響應將遠程文件移動到另一個遠程位置? – nebula 2014-12-03 15:04:14
現在很清楚。你沒有在......之前指定具體問題嗎?Gary的答案是否適合你? – 2014-12-03 15:06:14