ファイルをダウンロードして処理するために春の統合を使用しています。
<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:inbound-channel-adapter は、sftp サーバーからファイルをダウンロードするために使用されます。約6ファイルをダウンロードします。すべての xml ファイル。
Transformer は 6 つのファイルすべてを反復処理し、エラー タグがあるかどうかを確認します。エラータグがある場合、エラーコードは 1 に設定されます。それ以外の場合は 0 に設定されます。
変圧器を出てルーターに向かう際、エラーコードが1のファイルは特定のフォルダに移動(Error)、エラーコードが0のファイルは別のフォルダに移動(NoError)したい.
現在、トランスフォーマーは、6 つのファイルすべてのエラーコードとファイル名を含む「 list fileNames 」を返します。
ルーターを使用して各ファイルのエラー コードを確認するにはどうすればよいですか? 次に、その特定のファイルをルーターにマップします。
私の問題の一般的な C ロジック
for (int i =0; i<fileNames.lenght();i++) {
if(fileNames[i].getErrorCode == 1) {
moveToErrorFolder(fileNames[i].getName());
} else {
moveToNoErrors(fileNames[i].getName());
}
}
春の統合を使用してこれを達成するにはどうすればよいですか?. 不可能な場合、回避策はありますか? 私は今それが明確であることを願っています。前回は十分な詳細を提供できなかったことをお詫び申し上げます。
また、int-sftp:inbound-channel-adapter で、「remote-directory」フィールドと「local-directory」フィールドをシステム内の特定のフォルダーにハードコーディングしました。Bean プロパティまたは定数値からこれらを参照できますか? config.xml ファイルに基づいてこれらの値を構成する必要がありますが、それは可能ですか?
Spring Integration は初めてです。私を助けてください。前もって感謝します。