我需要一个能够执行以下操作的功能:
在流程的某个点,执行暂停到指定的时间。 (当所有消息都留在某个地方直到指定时间时,它就像停车/暂存一样) 因此,如果您设置2016-04-20 11:12:00(理想情况下由cron表达式指定),直到那时所有内容都暂停。 (流程不会继续处理消息)如果指定的时间已经过去,那么一个worflow会继续从这个“暂停”的时间开始执行。组件驻留。
使用Spring Integration可以做到这一点吗?
应如何实施?
答案 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
。