我正在使用 spring 集成来下载文件并处理它们。
<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 文件。
转换器迭代所有 6 个文件并检查它们是否有错误标记。如果有错误标签,则将其错误代码设置为 1。否则将设置为 0。
当它从变压器出来并进入路由器时,我想发送错误代码设置为 1 的文件以移动到特定文件夹(错误),将错误代码设置为 0 的文件移动到另一个文件夹(无错误) .
目前,转换器返回一个“列表文件名”,其中包含所有 6 个文件的错误代码和文件名。
如何使用路由器检查每个文件的错误代码?然后将该特定文件映射到路由器。
我的问题的通用 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 中,我已将“远程目录”和“本地目录”字段硬编码到系统中的特定文件夹中。我可以从 bean 属性或常量值中引用这些吗?我需要根据 config.xml 文件配置这些值,这可能吗?
我是 Spring 集成的新手。请帮我。提前致谢。