<int-file:inbound-channel-adapter
directory="#{dir}"
channel="inp" filename-regex="^.*\.(xml|lst)$" prevent-duplicates="false">
<int:poller max-messages-per-poll="1" cron ="#{timer}"/>
</int-file:inbound-channel-adapter>
有没有办法在轮询器触发之前启动上面的入站通道适配器? 通常情况下,轮询者每天开火一次,但有时我需要根据用户的互动立即进行操作(当用户点击“开始”按钮时)
谢谢,
Ferenc的
答案 0 :(得分:2)
对于您的信息:任何inbound-channel-adapter
都可以手动started/stopped
(您应该为该组件提供id
。但我们应该明白,它对我们没有帮助。因为任何活动都基于trigger
。
由于我看到您需要立即开始按用户事件进行轮询,因此您应该提供一些适当的Trigger
实现。例如。 OnlyOnceTrigger
我建议使用相同的选项和相同的<int-file:inbound-channel-adapter>
再添加一个channel
,但使用该自定义触发器不会破坏您的cron
逻辑。
新的<int-file:inbound-channel-adapter>
应标有auto-startup="false"
。用户start
按钮应立即start()
该组件,是,stop
。将启动单个轮询任务。
在这里,您应该考虑一些OnlyOnceTrigger
reset()
,以允许它在下一次按钮点击时启动新的轮询任务。
是的,你甚至可以实现一些复杂的Trigger
,包括cron
once
触发操作,以避免再增加<int-file:inbound-channel-adapter>
,但这已经取决于你了。< / p>