java - 如何使用 Spring Boot 通过 cron 表达式调度多个任务?

标签 java spring spring-boot cron

我想使用 cron 表达式使用 @schedule 注释来安排多个任务。我有三项工作需要在固定时间执行。例如,Job-1 已安排在每天晚上 11:PM,Job-2 已安排在每天上午 7 点至晚上 9 点,间隔为 1 小时,而 Job-3 已安排为每 1 小时一次。所有 3 个计划任务都是同一应用程序的一部分。

我已经尝试过相同的操作,但所有三个调度都没有发生。我的应用程序是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);
    }
}

关于java - 如何使用 Spring Boot 通过 cron 表达式调度多个任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42217691/

相关文章:

java - 不同源系统和单个消费者的主动 MQ 并发

spring - 在Spring Boot中无法获取系统变量

java - 无法在@OneToMany 关系spring 数据jpa 中删除

spring - Fongo - 未找到操作执行器

docker - 如何提供application.properties文件以 Spring 启动docker镜像作为输入

java - 如何在 Hibernate OGM 中禁用记录 Neo4j 查询?

Java数据库: bind multiple instances of a class to one instance of another class

java - HiveMQ RESTful 身份验证插件

java - 轻量级低延迟的 Java 网络库?

java - @OneToMany 中未填充父实体。 hibernate 双向