• 页面展现
  • 后台任务处理:恢复任务 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());
    }
    }
  • 数据库

补充:源码地址

SpringBoot多任务Quartz动态管理Scheduler,时间配置,页面+源码的更多相关文章

  1. 基于spring-boot和docker-java实现对docker容器的动态管理和监控[附完整源码下载]

    ​ (我是个封面) docker简介 Docker 是一个开源的应用容器引擎,和传统的虚拟机技术相比,Docker 容器性能开销极低,因此也广受开发者喜爱.随着基于docker的开发者越来越多,doc ...

  2. SpringBoot 初始化流程以及各种常见第三方配置的源码实现

    带着这几个问题去分析SpringBoot 初始化以及扩展机制实现 1.容器何时被创建,并默认配置了什么? 2.Spring 容器依赖于哪个后置处理器进行bean 容器的装配? 3.Spring 如何进 ...

  3. 【陪你系列】5 千字长文+ 30 张图解 | 陪你手撕 STL 空间配置器源码

    大家好,我是小贺. 点赞再看,养成习惯 文章每周持续更新,可以微信搜索「herongwei」第一时间阅读和催更,本文 GitHub https://github.com/rongweihe/MoreT ...

  4. ArcGIS紧凑型切片读取与应用2-webgis动态加载紧凑型切片(附源码)

    1.前言 上篇主要讲了一下紧凑型切片的的解析逻辑,这一篇主要讲一下使用openlayers动态加载紧凑型切片的web地图服务. 2.代码实现 上篇已经可以通过切片的x.y.z得对应的切片图片,现在使用 ...

  5. springboot+mybatis+bootstrap开发员工oa后台管理系统项目源码

    java项目源码详情描述:S020<springboot+mybatis+bootstrap开发员工oa后台管理系统项目源码>jboa项目有请假以及报销单的申请和审核session共享加登 ...

  6. MyEclipse如何配置Struts2源码的框架压缩包

    1.MyEclipse如何配置Struts2源码的框架压缩包 如本机的Struts2框架压缩包路径为:D:\MyEclipseUserLibraries\struts\struts-2.3.15.3- ...

  7. 转换GMT秒数为日期时间格式-Delphi源码

    转换GMT秒数为日期时间格式-Delphi源码.收藏最近在写PE分析工具的时候,需要转换TimeDateStamp字段值为日期时间格式,这是Delphi的源码. //把GMT时间的秒数转换成日期时间格 ...

  8. springBoot集成 quartz动态定时任务

    项目中需要用到定时任务,考虑了下java方面定时任务无非就三种: 用Java自带的timer类.稍微看了一下,可以实现大部分的指定频率的任务的调度(timer.schedule()),也可以实现关闭和 ...

  9. Quartz动态改变任务时间

    基于quartz-2.2 的动态任务调度 Quartz是一个完全由java编写的开源作业调度框架. 调度器 Quartz框架的核心是调度器.调度器负责管理Quartz应用运行时环境.调度器不是靠自己做 ...

随机推荐

  1. 微信小程序(1)

    微信小程序 什么是微信小程序? 微信小程序优点 跨平台 打开速度比h5快 不用下载 开发目录结构介绍 1. 小程序Pages目录说明 2. 工具文件夹 3. 全局文件 用法1 全局APP.json文件 ...

  2. 矩阵LU分解的MATLAB与C++实现

    一:矩阵LU分解 矩阵的LU分解目的是将一个非奇异矩阵\(A\)分解成\(A=LU\)的形式,其中\(L\)是一个主对角线为\(1\)的下三角矩阵:\(U\)是一个上三角矩阵. 比如\(A= \beg ...

  3. [05] 通过P/Invoke加速C#程序

    通过P/Invoke加速C#程序 任何语言都会提供FFI机制(Foreign Function Interface, 叫法不太一样), 大多数的FFI机制是和C API. C#提供了P/Invoke来 ...

  4. 乔悟空-CTF-i春秋-Web-Backdoor

    2020.09.05 每次遇到不会的,想两分钟就放弃了,直接奔wp,一看wp发现,wc,就这?我怎么没想到--心里想着下道题一定自己想,不看wp,然后周而复始

  5. 再不迁移到Material Design Components 就out啦

    翻译自国外文档加自己理解 原文 我们最近宣布了 Material Design Components(MDC)1.1.0 ,这是一个库更新,为您的 Android 应用程序带来了 Material T ...

  6. [程序员代码面试指南]链表问题-将单链表的每k个节点之间逆序

    题目描述 给定一个单链表的表头节点head,实现一个调整单链表的函数,是的每k个节点之间逆序,如果最后不够k个节点一组,则不调整最后几个节点. 题解 内部函数reverse实现链表beg到end的翻转 ...

  7. JVM_02 类加载子系统

    JVM细节版架构图 本文针对Class Loader SubSystem这一块展开讲解类加载子系统的工作流程 类加载子系统作用 1.类加载子系统负责从文件系统或者网络中加载class文件,class文 ...

  8. hystrix文档翻译之插件

    插件 可以通过实现插件来改变Hystrix的行为.可以通过HystrixPlugins来注册自定义插件,这些插件会被应用到HystrixCommand,HystrixObservableCommand ...

  9. SpringBoot-03-配置之yaml语法学习

    3. SpringBoot配置 3.1 yaml语法学习 配置文件 Springboot使用一个全局的配置文件,配置文件名称固定 spplication.properties 语法结构:key=val ...

  10. 关于excel表格中只复制筛选后的数据

    今天笔者在整个一个表格中的数据,需要将原表格的数据根据一些条件筛选后,整理到新的excel表中 但是发现每次操作,都将筛选条件之外的数据也粘贴进去了,但笔者确实又只选中了部分数据 经过多种方式尝试后, ...