springboot+Quartz通过数据库控制定时使命执行与时间

打印 上一主题 下一主题

主题 844|帖子 844|积分 2532

前言

在我们的springboot项目中,有许多种实现定时使命的方式
有用最简单的
   @Scheduled 实现定时使命,即:
  1. import org.springframework.scheduling.annotation.Scheduled;
  2. import org.springframework.stereotype.Component;
  3. @Component
  4. @EnableScheduling
  5. public class ScheduledTasks {
  6.     // 固定延迟任务
  7.     @Scheduled(fixedDelay = 5000)
  8.     public void fixedDelayTask() {
  9.         System.out.println("任务以固定的5秒延迟执行");
  10.     }
  11.     // 固定频率任务
  12.     @Scheduled(fixedRate = 5000)
  13.     public void fixedRateTask() {
  14.         System.out.println("任务以固定的每5秒执行");
  15.     }
  16.     // Cron 表达式任务
  17.     @Scheduled(cron = "0 0/5 * * * ?")
  18.     public void cronTask() {
  19.         System.out.println("任务以固定的每5分钟执行");
  20.     }
  21. }
复制代码
  使用TaskScheduler  动态创建使命
  1. import org.springframework.context.annotation.Bean;
  2. import org.springframework.context.annotation.Configuration;
  3. import org.springframework.scheduling.TaskScheduler;
  4. import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
  5. @Configuration
  6. public class SchedulerConfig {
  7.     @Bean
  8.     public TaskScheduler taskScheduler() {
  9.         ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
  10.         scheduler.setPoolSize(10);
  11.         scheduler.setThreadNamePrefix("scheduler-");
  12.         return scheduler;
  13.     }
  14. }
复制代码
  1. import org.springframework.beans.factory.annotation.Autowired;
  2. import org.springframework.scheduling.TaskScheduler;
  3. import org.springframework.stereotype.Component;
  4. import javax.annotation.PostConstruct;
  5. import java.util.concurrent.ScheduledFuture;
  6. @Component
  7. public class DynamicScheduledTask {
  8.     @Autowired
  9.     private TaskScheduler taskScheduler;
  10.     private ScheduledFuture<?> scheduledFuture;
  11.     @PostConstruct
  12.     public void scheduleTask() {
  13.         scheduledFuture = taskScheduler.schedule(this::task, new CronTrigger("0 0/5 * * * ?"));
  14.     }
  15.     public void task() {
  16.         System.out.println("定时任务执行");
  17.     }
  18. }
复制代码
除此外另有各种定时框架
   Quartz
XXL-JOB
Elastic-Job
  当然另有其他,但是本次将会着重讲解如何用Quartz定时框架和数据库来控制定时使命的执行与否以及执行时间长度

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

八卦阵

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表