1

我正在尝试从目录中读取文件。如果文件无法处理,它会留在那里以供稍后尝试。

<file:inbound-channel-adapter prevent-duplicates="false" id="fileInput" directory="file:${java.io.dir}/input-data" auto-create-directory="true" filter="compositeFileFilterBean"/>

    <integration:poller id="poller" max-messages-per-poll="10" default="true" >
        <integration:interval-trigger interval="60" time-unit="SECONDS" />
    </integration:poller>

问题是,如果 max-messages-per-poll 设置为 10,那么每次轮询将准确返回 10 条消息,即使只有 1 个文件(即所有 10 条消息都相同)。

4

2 回答 2

3

是的,这将是这些设置的预期行为。

我不确定你为什么认为这是错误的。

如果目录中存在未被过滤器过滤的文件(例如防止重复的文件),则轮询器将在当前轮询中找到该文件(当 max-messages-per-poll > 1 ) 或在下一次投票中。

要执行您想要的操作,您需要一个自定义过滤器,该过滤器将过滤之前在 60 秒轮询间隔内找到的文件。

于 2012-10-23T20:08:29.723 回答
0

您可以: 选项 1。在入站通道适配器中将属性“防止重复”设置为 true。如果没有其他过滤器或文件正则表达式,则此属性默认为 true,并且。如果我们使用自定义过滤器,springs 知道我们的自定义过滤器将包含 AcceptOnceFileListFilter,因此它将 prevent-duplicates 设置为 false。

选项 2。使用过滤器 org.springframework.integration.file.filters.AcceptOnceFileListFilter 完成 bean “compositeFileFilterBean”

于 2020-10-20T16:28:40.650 回答