轮询器在1个循环后停止工作

时间:2014-11-28 07:33:40

标签: spring-integration

在我的流程开始时,我有一个文件入站适配器,它定期读取目录:

 <int-file:inbound-channel-adapter id="filteredFiles"
    directory="${controller.cycle.lists.input.dir}"
    channel="semaphoreChannel" filename-pattern="*.xml">
    <int:poller fixed-delay="3000"/>**  
</int-file:inbound-channel-adapter>

当SI工作流程结束时,它永远不会再发生。看来轮询器已经死了并停止工作。

日志中没有任何错误消息,也没有任何警告。

频道配置:

<int:channel id="semaphoreChannel" datatype="java.io.File"/>

第二种配置:

 <int-file:inbound-channel-adapter id="filteredFiles"
    directory="${controller.cycle.lists.input.dir}"
    channel="semaphoreChannel" filename-pattern="*.xml">
    <int:poller cron="0 * * * * *" />   
</int-file:inbound-channel-adapter>

1 个答案:

答案 0 :(得分:0)

没有意义。

由于您使用其他<poller>选项的默认设置,因此您最终得到:

public static final int MAX_MESSAGES_UNBOUNDED = Integer.MIN_VALUE;

private volatile long maxMessagesPerPoll = MAX_MESSAGES_UNBOUNDED;

这意味着FileReadingMessageSource在单个轮询周期中按提供的模式读取所有文件。

poller不会停止工作,但目录中没有其他内容可供阅读。

更改为此max-messages-per-poll="1"并告诉我们它是怎么回事。

从另一方面,您可以打开org.springframework.integration.endpoint.SourcePollingChannelAdapter的DEBUG日志记录级别,日志中会显示一条消息:

  

在投票期间未收到任何消息,返回'false'