在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" />
现在工作正常。
答案 0 :(得分:1)
<int-file:inbound-channel-adapter>
的目标:
可以使用
FileReadingMessageSource
来使用文件 文件系统。这是创建的MessageSource的实现 来自文件系统目录的消息。要阻止为某些文件创建消息,您可以提供
FileListFilter
。默认情况下,使用以下2个过滤器:
IgnoreHiddenFileListFilter
AcceptOnceFileListFilter
所以,它是第一次从文件中获取文件是正确的,但如果没有任何新文件与过滤器匹配,它将不会随后执行任何操作。