Spring Boot 中的 @Schedule 不会在我们提供的日期运行
Posted
技术标签:
【中文标题】Spring Boot 中的 @Schedule 不会在我们提供的日期运行【英文标题】:@Schedule in spring boot will not run on dates which we provided 【发布时间】:2020-03-27 23:21:52 【问题描述】:@Scheduled(cron="*/5 * * * * ?")
public void startQuery()
try
//some code
catch(Exception e)
-
如何将动态列表发送到@Schedule。
@Scheduled
将在我们提供的特定日期运行。
Spring Boot 中的 @Scheduled
不会在我们提供的日期运行。
在 cron 表达式中我想发送列表以及我想排除哪些日期。
【问题讨论】:
纯代码编写请求在 Stack Overflow 上是题外话——我们希望这里的问题与特定编程问题有关——但我们很乐意帮助您自己编写!告诉我们what you've tried,以及您遇到的问题。这也将有助于我们更好地回答您的问题。cron
可以使用 SpEL 表达式从属性中获取某些内容。这不是完全动态的。如果您想要类似的东西,请使用 Quartz 而不是 @Scheduled
以获得更多控制权。或者通过自己向TaskScheduler
提交任务来手动进行调度。
【参考方案1】:
在@Scheduled 注释中,您不能使用动态值,但这不是问题,因为您有另一种方法,例如此代码示例:
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.initialize();
loadCrons()
private void loadCrons()
String cron = <read your cron from somewhere>
scheduler.schedule(new Runnable()
@Override
public void run()
// do your stuff here
, new CronTrigger(cron);
如果您的 crons 已更改并且您想重新加载它们,您必须这样做:
scheduler.shutdown();
scheduler.initialize();
loadCrons();
完成。
【讨论】:
以上是关于Spring Boot 中的 @Schedule 不会在我们提供的日期运行的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot系列:Spring Boot定时任务Spring Schedule