有没有办法手动启动入站通道适配器? [春季整合]

时间:2015-03-02 04:43:58

标签: spring-integration

 <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的

1 个答案:

答案 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>