如何使用Springboot通过cron表达式来安排多个任务?
问题描述:
我想使用cron表达式使用@schedule注释来安排多个任务。我有三个工作需要在固定的时间执行。例如,Job-1每天下午11点安排一次,Job-2安排在每天上午7点到下午9点,间隔1小时,Job-3每1小时安排一次。所有3个时间表任务都是同一个应用程序的一部分。如何使用Springboot通过cron表达式来安排多个任务?
我已经尝试过,但所有三个调度没有发生。我的应用程序是SpringBoot应用程序。我不是新的日程安排。只是帮助我。下面是他我的做法
application.properties
cron.expression.job1=0 0 23 * * ?
cron.expression.job2=0 0 7,9 * * ?
cron.expression.job3=0 0/60 * * ?
Java代码的
@EnableScheduling
@SpringBootApplication
public class Scheduler{
// doCallScheduleJob Code
}
class ScheduleJob{
@Scheduled(cron="${cron.expression.job1}")
public sycName1(){
///doSomething()
}
@Scheduled(cron="${cron.expression.job2}")
public sycName2(){
///doSomething()
}
@Scheduled(cron="${cron.expression.job3}")
public sycName3(){
///doSomething()
}
答
您应该配置您的TaskScheduler线程池的大小。如果你没有配置,默认的大小是1,这意味着Spring会逐个执行你的任务。您可以在下面配置您的TaskScheduler。
@Configuration
@EnableAsync
@EnableScheduling
public class SpringBootConfiguration {
@Bean
public Executor getTaskExecutor() {
return Executors.newScheduledThreadPool(10);
}
}
“我试过了,但所有三种调度都没有发生”。您必须在问题中包含您尝试过的内容,以便其他人为您提供帮助。 –
@RamanujanR我用我的方法编辑了我的查询......你可以看看这个 – Saurabh