Spring integration 在流的某个点计划执行

Spring integration 在流的某个点计划执行,spring-integration,Spring Integration,我需要一个功能,它可以执行以下操作: 在流的某个点,执行暂停到指定的时间。 (这就像在指定时间之前所有消息都保留在一个地方的停车/登台) 因此,如果将2016-04-20 11:12:00设置为该时间(理想情况下由cron表达式指定),直到该时间,所有内容都暂停。(流不继续处理消息)如果指定的时间已过,则工作流将从该“暂存”组件所在的点继续执行 使用Spring集成可以做到这一点吗 应该如何实施 实际上,DelayHandler的defaultDelay可以从日期值计算: @Autowired

我需要一个功能,它可以执行以下操作:

  • 在流的某个点,执行暂停到指定的时间。 (这就像在指定时间之前所有消息都保留在一个地方的停车/登台) 因此,如果将2016-04-20 11:12:00设置为该时间(理想情况下由cron表达式指定),直到该时间,所有内容都暂停。(流不继续处理消息)如果指定的时间已过,则工作流将从该“暂存”组件所在的点继续执行

  • 使用Spring集成可以做到这一点吗

  • 应该如何实施


实际上,
DelayHandler
defaultDelay
可以从日期值计算:

@Autowired
@Qualifier("myDelayer.handler")
private DelayHandler myDelayer;

...

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

或者,您可以将所需的
日期
放在消息头上,然后使用
延迟表达式

从另一端,您只需将消息放入
队列通道
,并使用端点上
的所需
cron
,该端点应轮询来自该队列的消息


如果您有这么长的代码>代码>延迟>代码>时间,您应该考虑使用<代码>持久性< /COD> <代码> MessageStore <代码> >代码> >队列通道< /代码> .< /P>让我们知道<代码> <代码>是否符合您的要求。使用延迟器,您不能指定执行时的完整日期/时间。您只能定义一个指定的时间量,消息将随着该时间而延迟。我想用cron表达式指定时间,比如execution应该在每个星期天的10:00继续执行flow。我试图为该功能找到一个合适的taskExecutor,但我没能做到。我还尝试使用聚合器组件来实现它。我定义了一个聚合器和一个返回false的发布策略。我还使用cron表达式定义了一个消息收割机。聚合器属性:在到期时发送部分结果=“true”在完成时终止组=“true”该设计的问题是,当“收割者”开火时,不完整的组也被释放。这似乎没问题。你总是帮了大忙!我试图实现它。完成后我很快就会向你求助。