有没有办法手动启动入站通道适配器?[弹簧集成]


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

有没有办法在轮询器触发之前启动上述入站通道适配器?通常轮询器每天发射一次,但有时我需要根据用户的交互立即操作(当用户单击"开始"按钮时(

谢谢

费伦茨

供您参考:任何inbound-channel-adapter都可以手动started/stopped(您应该为该组件提供id(。但我们应该明白,它还对我们没有帮助。因为任何活动都基于trigger

正如我看到您要求立即按用户事件开始轮询一样,因此您应该提供一些适当的Trigger实现。 例如 OnlyOnceTrigger

我建议再添加一个具有相同选项和相同channel<int-file:inbound-channel-adapter>,但使用该自定义触发器不要破坏您的cron逻辑。该新<int-file:inbound-channel-adapter>应标有auto-startup="false"。用户start按钮应该start()该组件,是的,立即stop。将启动单个轮询任务。

在这里,您应该考虑一些OnlyOnceTrigger reset(),以允许它在单击下一个按钮时启动新的轮询任务。

是的,您甚至可以实现一些复杂的Trigger,包括cron once触发操作以避免更多的<int-file:inbound-channel-adapter>,但这已经取决于您。

相关内容

最新更新