Spring集成 - 首次尝试后文件适配器无法正常工作

时间:2017-10-03 10:49:44

标签: spring spring-integration

在Spring Integration中遇到了File Adapter的一些问题并且不知道,因为我之前从未听说过这个问题。使用以下代码从FTP文件夹中读取文件并将其写入本地目录。

问题是服务器启动后,它第一次正常工作。但后续调用会调用文件适配器,但文件移动过程不会发生。

Cron Timing是: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"/>

编辑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 个答案:

答案 0 :(得分:1)

<int-file:inbound-channel-adapter>的目标:

  

可以使用FileReadingMessageSource来使用文件    文件系统。这是创建的MessageSource的实现    来自文件系统目录的消息。

     

要阻止为某些文件创建消息,您可以提供FileListFilter。默认情况下,使用以下2个过滤器:

     
      
  • IgnoreHiddenFileListFilter
  •   
  • AcceptOnceFileListFilter
  •   

所以,它是第一次从文件中获取文件是正确的,但如果没有任何新文件与过滤器匹配,它将不会随后执行任何操作。