1

私が取り組んでいるアプリケーションには、Spring Integration 2.5 を使用した統合レイヤー ビルドがあり、FTP アダプターを使用して FTP サーバーから CSV ファイルをプルしようとし、ファイル アダプターによってポーリングされるローカル サーバーにドロップします。そのため、ファイルが ftp によってダウンロードされるとすぐに、ファイル アダプターはそれをスプリッターに渡します。スプリッターでは、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 をスローします。この問題を解決する方法についての提案をいただければ幸いです。その製品の問題と早期の対応が本当に必要です。

4

0 に答える 0