• 页面展现
  • 后台任务处理:恢复任务 15s执行一次

    后台打印消息
  • 不BB了,直接上代码
    import...
    
    /**
    * 调度工厂类
    * Created by jinyu on 2018/4/14/014.
    */
    @Service
    @Component
    public class MySchedulerFactory {
    private static Logger logger = LoggerFactory.getLogger(MySchedulerFactory.class);
    @Autowired
    SchedulerFactoryBean schedulerFactoryBean; // 任务配置读取服务
    @Autowired
    private AsyncQuartzConfService asyncQuartzConfService; public void scheduleJobs() throws SchedulerException {
    Scheduler scheduler = getScheduler();
    startJob(scheduler);
    } // 获取scheduler
    private Scheduler getScheduler(){
    return schedulerFactoryBean.getScheduler();
    }
    // 项目启动 开启任务
    private void startJob(Scheduler scheduler) {
    try {
    List<Quartz_Config> jobList = asyncQuartzConfService.getJobList();
    for (Quartz_Config config : jobList) {
    // 1-暂停的任务 0-正常运行任务
    if (1l==config.getStatus()){
    continue;
    }
    @SuppressWarnings("unchecked")
    Class<? extends Job> clazz = (Class<? extends Job>) Class.forName(config.getQuartz_Class());
    JobDetail jobDetail = JobBuilder.newJob(clazz)
    .withIdentity(config.getName(), config.getGroup()).build();
    CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(config.getCron());
    CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(config.getName(), config.getGroup())
    .withSchedule(scheduleBuilder).build();
    scheduler.scheduleJob(jobDetail, cronTrigger);
    }
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }catch (SchedulerException e) {
    e.printStackTrace();
    }
    } // 任务暂停
    public void pauseJob(long id) throws SchedulerException {
    Scheduler scheduler = getScheduler();
    Quartz_Config quartz_config = asyncQuartzConfService.findById(id);
    JobKey jobKey = JobKey.jobKey(quartz_config.getName(), quartz_config.getGroup());
    scheduler.deleteJob(jobKey);
    } // 任务恢复
    public void resumeJob(long id) throws SchedulerException, ClassNotFoundException {
    Scheduler scheduler = getScheduler();
    Quartz_Config quartz_config = asyncQuartzConfService.findById(id);
    JobKey jobKey = JobKey.jobKey(quartz_config.getName(), quartz_config.getGroup());
    Class<? extends Job> clazz = (Class<? extends Job>) Class.forName(quartz_config.getQuartz_Class());
    JobDetail jobDetail1 = scheduler.getJobDetail(jobKey);
    if (jobDetail1==null){
    JobDetail jobDetail = JobBuilder.newJob(clazz)
    .withIdentity(quartz_config.getName(), quartz_config.getGroup()).build();
    CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(quartz_config.getCron());
    CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(quartz_config.getName(), quartz_config.getGroup())
    .withSchedule(scheduleBuilder).build();
    scheduler.scheduleJob(jobDetail, cronTrigger);
    }else {
    scheduler.resumeJob(jobKey);
    }
    }
    }
  • 启动Springboot监听
    import ...
    
    /**
    * 定时任务运行工厂类
    * Created by jinyu on 2018/4/12/012.
    */
    @Configuration
    public class StartSchedulerListener implements ApplicationListener<ContextRefreshedEvent> {
    @Autowired
    public MySchedulerFactory mySchedulerFactory; // springboot 启动监听
    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
    try {
    mySchedulerFactory.scheduleJobs();
    } catch (SchedulerException e) {
    e.printStackTrace();
    }
    } //注入SchedulerFactoryBean
    @Bean
    public SchedulerFactoryBean schedulerFactoryBean() {
    SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
    return schedulerFactoryBean;
    }
    }
  • 任务类,按需创建
    /**
    * 定时任务实现类
    * Created by jinyu on 2018/4/12/012.
    */
    @Configuration
    @Component
    @EnableScheduling
    public class ScheduleTask1 implements Job { private static Logger logger = LoggerFactory.getLogger(ScheduleTask1.class); @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
    try {
    System.out.print("任务执行1 :");
    System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); } catch (Exception e) {
    logger.error(e.getMessage());
    }
    }
  • 数据库

补充:源码地址

最新文章

  1. Get&amp;Post简单说明
  2. 一个C++类的注释:
  3. js:数据结构笔记4--队列
  4. 将String类型的XML解析并设置到实体类中
  5. Unity3d NGUI 地图
  6. DevExpress GridControl 复合表头/表头分层设计.
  7. accelerated C++ 中查找url(学习笔记)
  8. OPTICS光学算法
  9. .htaccess文件的妙用
  10. HttpGet协议与正则表达
  11. ionic2 跳转子页面隐藏底部导航栏
  12. [物理学与PDEs]第2章习题13 将 $p$ - 方程组化为守恒律形式的一阶拟线性对称双曲组
  13. project6 PIT游戏
  14. 处理数据库 Ora-00845: memory_traget not supported on this system 的错误
  15. mysql 函数应用
  16. iOS 证书申请和使用详解(详细版)阅读
  17. DSP 程序的执行时间
  18. ASP.NET Identity系列01,揭开神秘面纱
  19. [Python] Python 之 function, unbound method 和 bound method
  20. PMP备考指南之相关事项介绍

热门文章

  1. 跟着兄弟连系统学习Linux-【day01】
  2. C014:不用算术分割显示逆序三位数
  3. 转载:Oracle常见字段类型
  4. Django循环创造div后,对各个div操作后触发事件,传递数据(Django九)
  5. [LeetCode]55. 跳跃游戏(贪心)
  6. 【好消息】博客迁移到github,求关注,求star,求支持
  7. java 多线程-3
  8. docker报错处理集合
  9. (数据科学学习手札95)elyra——jupyter lab平台最强插件集
  10. zookeeper(3) 持久化