Spring集成| FTP - 文件适配器问题

时间:2012-10-29 09:00:01

标签: spring integration

我正在处理的应用程序使用Spring Integration 2.5进行集成层构建,它尝试使用FTP适配器从FTP服务器提取CSV文件并将其放到本地服务器上,该服务器由 文件适配器。因此,只要ftp下载文件,文件适配器就会将其传递给Splitter,其中CSV文件被拆分为单独的记录并发送到下游进行进一步处理。

当拆分器有时看不到FTP适配器下载的文件时,会出现问题。下面是配置详细信息和来自拆分器的那段代码,它试图检查文件是否存在,如果文件不存在则抛出用户定义的异常。

问题是它总是遇到异常。

  <ftp:inbound-channel-adapter id="ftpInbound" channel="ftpChannel"
        session-factory="ftpClientFactory"
        filename-regex="${ftp.server.remotefilename}"
        auto-create-local-directory="true" delete-remote-files="false"
        remote-directory="${ftp.server.remotefolder}"
        local-directory="file:${ftp.server.localfolder}">
        <si:poller ref="FTPPoller"></si:poller>
    </ftp:inbound-channel-adapter>
    <si:channel id="ftpChannel">
        <si:queue />
    </si:channel>

    <file:inbound-channel-adapter id="fileInboundAdapter"
        channel="fileIn" directory="file:${ftp.server.localfolder}"
        filename-pattern="${ftp.server.localfilename}"
        auto-create-directory="true" prevent-duplicates="false">
        <si:poller ref="filePoller"></si:poller>
    </file:inbound-channel-adapter>

    <si:channel id="fileIn" />

    <si:splitter input-channel="fileIn" output-channel="csvRowsIn" ref="inboundFileRowSplitter" method="extractRows" />

public class InboundFileRowSplitter {

    @Splitter
    public Collection<String[]> extractRows( @Headers
    Map<String, Object> headers, File keywordFile ) {

       >>Other Processing<<

        return processKeywordsFile( keywordFile );
    }


    private Collection<String[]> processKeywordsFile( File keywordFile ) {

       try {
            if (keywordFile.exists()) {

             >>Other Processing<<

            } else {
                throw new ResourceLoaderException( "............................" );
            }

        } catch (Exception e) {
            >>Other Processing<<
        } finally {
           >>Other Processing<<
        }

    }

在下面的代码中,它会在定义的期望ResourceLoaderException下抛出。任何关于如何解决这个问题的建议都将受到赞赏,其生产问题和早期反应确实会。

0 个答案:

没有答案