在流程的某个点计划执行

Scheduled execution at a certain point of a flow

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

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

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

...

Date nextDate = ...
myDelayer.setDefaultDelay(nextDate.getTime() - System.currentTimeMillis());

并在启动您的应用程序后在某处使用此代码,例如ContextRefreshedEvent.

或者您可以将所需的 Date 放入消息 header 并使用 delay-expression

从另一端,您可以将消息发送到 QueueChannel 并使用来自端点 <poller> 的所需 cron,端点应该轮询来自 queue 的消息.

如果您有这么长的 delay 时间来处理这些消息,您应该考虑在 QueueChannel.

上使用 persistent MessageStore