计划在流的某个点执行

时间:2015-03-29 04:19:48

标签: spring-integration

我需要一个能够执行以下操作的功能:

  • 在流程的某个点,执行暂停到指定的时间。 (当所有消息都留在某个地方直到指定时间时,它就像停车/暂存一样) 因此,如果您设置2016-04-20 11:12:00(理想情况下由cron表达式指定),直到那时所有内容都暂停。 (流程不会继续处理消息)如果指定的时间已经过去,那么一个worflow会继续从这个“暂停”的时间开始执行。组件驻留。

  • 使用Spring Integration可以做到这一点吗?

  • 应如何实施?

1 个答案:

答案 0 :(得分:1)

实际上,defaultDelay的{​​{1}}可以从日期值计算出来:

DelayHandler

并在启动应用程序后的某处使用此代码,例如@Autowired @Qualifier("myDelayer.handler") private DelayHandler myDelayer; ... Date nextDate = ... myDelayer.setDefaultDelay(nextDate.getTime() - System.currentTimeMillis());

或者您可以将所需的ContextRefreshedEvent放入邮件标题并使用Date

从另一方面,您只需将邮件发送到delay-expression,然后使用端点QueueChannel上的所需cron,该端点应该轮询来自该队列的邮件。

如果您有<poller>次这些邮件的时间,则应考虑在delay上使用persistent MessageStore