我有一个弹簧集成FTP适配器,如下所示
<int-ftp:inbound-channel-adapter id="ftpInbound"
channel="ftpChannel"
session-factory="ftpClientFactory"
filter="myCustomFilter"
auto-create-local-directory="true"
delete-remote-files="false"
remote-directory="/app/far/boo"
local-directory="file:output">
<int:poller fixed-rate="60000" max-messages-per-poll="-1"/>
</int-ftp:inbound-channel-adapter>
自定义过滤器的定义方式是我通过FTP获取2个文件到我的本地目录。
现在我需要将所有下载的文件发送到下一个组件的频道。
我在下面尝试过:
<int:service-activator id="mySA" method="handleMessage" input-channel="ftpChannel" output-channel="nullChannel" ref="myFeeder">
<int:poller fixed-rate="1000" max-messages-per-poll="-1"></int:poller>
</int:service-activator>
<bean id="myFeeder" class="com.cs.imf2.feeder.polar.MyFeeder"/>
运行代码时,程序正确下载2个文件,但myFeeder的handleMessage只被调用1次,2个下载文件中的1个作为参数传递。
答案 0 :(得分:0)
打开调试日志记录并查看日志。请注意,如果已处理具有相同名称的文件,则不会再次处理该文件 - 即使它已再次下载。 3.0引入了一个局部过滤器,允许更改此行为。
适配器具有本地目录的AcceptOnceFileListFilter。使用3.0(目前在里程碑2),您将能够使用AcceptAllFileListFilter覆盖此过滤器。这在3.0之前不可用。其他用户通过分离这两个函数(在ftp适配器上使用nullChannel)解决了这个限制,并使用一个单独的来监视本地目录。您可以控制文件适配器上的过滤器。
要删除该文件,您可以向使用端点添加ExpressionEvaluatingRequestHandlerAdvice
(例如<service-activator/>
。有关如何使用建议的示例,请参阅retry-and-more Sample,以及{ {3}}