目前,目录和固定费率轮询周期取自属性文件。
<file:inbound-channel-adapter id="batchFilesStock" directory="#{configurationService.configuration.getProperty('qlacceleratorcore.batch.impex.stockbasefolder')}"
filename-regex="^(\d+)\-(.*).csv" comparator="fileOrderComparator" prevent-duplicates="false">
<int:poller fixed-rate="#{configurationService.configuration.getProperty('pollerperiod')}"/>
</file:inbound-channel-adapter>
我喜欢从数据库中获取固定速率值,否则该值应该在运行时可配置。我搜索了许多链接,但无法找出解决方案。 有什么想法吗?
答案 0 :(得分:2)
有一个示例应用https://github.com/SpringSource/spring-integration-samples/tree/master/intermediate/dynamic-poller,展示了如何使用具有可配置轮询率的轮询器。
请注意,更改将在下次投票时生效...
“更改轮询周期时,在以当前速率进行NEXT轮询后,将发生触发更改。因此,如果当前轮询周期为60秒并且您将其更改为1秒,则最多可能需要60秒生效,具体取决于您在轮询周期中进行更改的时间。“
本质上,您创建一个自定义触发器,在调度程序调用{{1}}时返回适当的值。
编辑:
下面的评论询问“......如何在多个轮询器中使用自定义触发器”。
好吧,看看nextExecutionTime()
。请注意,特定轮询器的状态包含在传递给方法(nextExecutionTime()
)的参数中,该参数用于计算下一个执行时间。
因此,您可以在任意数量的轮询器中重复使用触发器......
TriggerContext
如果您想为每个设置不同的费率,那么只需为每个设置使用不同的触发器(适当配置)。