我使用彈簧集成來下載文件並對其進行處理。通過彈簧集成來遍歷文件或記錄列表
<int-sftp:inbound-channel-adapter channel="FileDownloadChannel"
session-factory="SftpSessionFactory"
remote-directory="/home/sshaji/from_disney/files"
filter = "modifiedFileListFilter"
local-directory="/home/sshaji/to_disney/downloads"
auto-create-local-directory="true" >
<integration:poller cron="*/10 * * * * *" default="true"/>
</int-sftp:inbound-channel-adapter>
<integration:transformer input-channel="FileDownloadChannel"
ref="ErrorTransformer"
output-channel="EndChannel"/>
<integration:router input-channel="FileErrorProcessingChannel"
expression="payload.getErrorCode() > 0">
<integration:mapping value="true" channel="ReportErrorChannel"/>
<integration:mapping value="false" channel="FilesBackupChannel"/>
</integration:router>
int-sftp:入站通道適配器用於從sftp服務器下載文件。 它下載約6個文件。所有的xml文件。
轉換器遍歷所有6個文件並檢查它們是否有錯誤標記。 如果有錯誤標籤,那麼它將設置它的錯誤代碼爲1.否則它將被設置爲0.
當它從變壓器出來並進入路由器時,我想發送錯誤代碼的文件被設置爲1以移動到特定文件夾(錯誤) 以及錯誤代碼設置爲0以移動到另一文件夾(NoError)的那些文件夾。
目前變壓器返回一個「list fileNames」,其中包含所有6個文件的錯誤代碼和文件名。
如何檢查每個使用路由器的文件的錯誤代碼?然後將該特定文件映射到路由器。
常見的C邏輯我的問題
for (int i =0; i<fileNames.lenght();i++) {
if(fileNames[i].getErrorCode == 1) {
moveToErrorFolder(fileNames[i].getName());
} else {
moveToNoErrors(fileNames[i].getName());
}
}
我怎樣才能做到這一點使用Spring的集成? 如果它不可能,是否有任何解決方法? 我希望現在清楚。我很抱歉上次沒有提供足夠的細節。
同樣在int-sftp:入站通道適配器中,我已經將「remote-directory」和「local-directory」字段硬編碼到系統中的特定文件夾。我可以從一個bean屬性或從一個常量值引用這些嗎? 我需要根據config.xml文件配置這些值,這是可能的嗎?
我是Spring Integration的新手。請幫幫我。 在此先感謝。
對不起,我不明白你在問什麼。請提供更多詳細信息,以及路由器之前的SI配置。 –
感謝@GaryRussell的回覆,我更新了更多的細節。請看一看。請問我是否需要更多的細節。我很感激幫助。 –