2017-10-03 3 views
0

Spring IntegrationでFile Adapterに関するいくつかの問題が発生しており、これまでにこれまで聞いたことはありませんでした。以下のコードを使用してFTPフォルダからファイルを読み込み、ローカルディレクトリに書き込みます。Spring統合 - 最初の試行後にファイルアダプタが動作しない

問題は、サーバーが起動した後、初めて正常に動作します。しかし、その後の呼び出しではファイル・アダプタが呼び出されますが、ファイル移動プロセスは実行されません。

クロムタイミングは:0/20 * * * *?

この奇妙な行動についてのご意見はありますか?

<int:channel id="txtFilesIn"> 
     <int:dispatcher task-executor="executor"/> 
    </int:channel> 
    <int:channel id="txtFilesOut"> 
     <int:dispatcher task-executor="executor"/> 
    </int:channel> 

    <int-file:inbound-channel-adapter id="txtFilesIn" 
     directory="${FILE_IN}" 
     filename-pattern="*.csv" 
     auto-startup="true"> 
     <int:poller cron="${CRON_TAB}" ></int:poller> 
    </int-file:inbound-channel-adapter> 

    <int:service-activator input-channel="txtFilesIn" 
          output-channel="txtFilesOut" 
          ref="apiCommonService" 
          method="readFile"/> 

    <int-file:outbound-channel-adapter id="txtFilesOut" 
     directory="${FILE_OUT}" 
     delete-source-files="true"/> 

EDIT 1:この

<int-file:inbound-channel-adapter id="txtFilesIn" 
     directory="${FILE_IN}"    
     auto-startup="true" 
    local-filter="acceptAll"> 
     <int:poller cron="${CRON_TAB}" ></int:poller> 
    </int-file:inbound-channel-adapter> 

<bean id="acceptAll" class="org.springframework.integration.file.filters.AcceptAllFileListFilter" /> 

のように変更された

それは今、正常に動作しています。

答えて

1

<int-file:inbound-channel-adapter>の目標:

FileReadingMessageSourceが ファイルシステムからファイルを消費するために使用することができます。これは、ファイルシステムディレクトリからメッセージ を作成するMessageSourceの実装です。

特定のファイルのメッセージを作成しないようにするには、FileListFilterを入力します。

  • IgnoreHiddenFileListFilter
  • AcceptOnceFileListFilter

ので、それはそれは最初の時間からファイルを拾っていることが正しいのですが、それは何もいずれかの操作を実行しません:デフォルトでは、次の2つのフィルタが使用されていますフィルタに一致する新しいファイルがない場合は、後続の時間。

+0

ファイルアダプタは10分ごとに1回実行され、INフォルダにファイルをもう一度配置しました。これはうまくいくはずなので、IIRCのポーリングがそこにある理由です。しかし、それは起こっていないと私は理由を知らない! – Rajkumar

+0

'私はちょうどファイルを再配置しました。それは重要な部分です(!!!)。 'AcceptOnceFileListFilter'を参照してください。同じファイルを再度処理することはできません。フィルタリングロジックはファイル名に基づいています。ですから 'delete-source-files =" true "' onを使う限り、別の名前のファイルを置くか、この 'AcceptOnceFileListFilter'を' 'から無効にしなければなりませんアウトバウンド側。 –

+0

acceptAllFilterでコードを修正しても問題ありません。助けてくれてありがとう。 – Rajkumar

関連する問題