Quartz

Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。还支持分布式调度

第一步,引入依赖:

  Quartz

   因为是springboot,所以直接有启动器帮我们配置了底层的文件,我们直接引入启动器即可

第二步,在yml/properties文件中配置相关参数:

  Quartz

  job-store-type:jdbc——这里意思是使用数据库来存储quartz的任务,还有就是memory(内存方式)

  jdbc:initialize-schema——这里是指项目启动的时候不初始化表数据

第三步,如果是使用jdbc作为存储,则需要在数据库中配置以下几张表:

  QRTZ_BLOB_TRIGGERS  QRTZ_CALENDARS  QRTZ_CRON_TRIGGERS

  QRTZ_FIRED_TRIGGERS  QRTZ_JOB_DETAILS  QRTZ_LOCKS

  QRTZ_PAUSED_TRIGGER_GRPS  QRTZ_SCHEDULER_STATE

  QRTZ_SIMPLE_TRIGGERS  QRTZ_SIMPROP_TRIGGERS

  QRTZ_TRIGGERS

  附上sql文件的传送门:https://www.cnblogs.com/joelYe/p/13744051.html

第四步,配置需要执行的job和触发器trigger即可,暂时使用了以下两种方式:

  第一种:手动配置job和trigger的Bean:

    创建一个需要执行的job类如图,重写executeInternal方法

      Quartz

   然后编写一个QuartzConfig配置类,在配置类中配置job和trigger触发器的出发时间:

    Quartz

    这里使用到了cron表达式,可以直接进入这个网站(https://cron.qqe2.com/),编写需要触发的时间

    这种定时器通常用于需要一直间断执行任务,比如上述的0时任务,需要一直轮询的工作

  第二种:需要某种特定的条件触发:

    同样编写了job后,在特定的条件下触发:

    Quartz

 

    可以在类中,也可以在其他地方,只需要引入SchedulerFactoryBean即可,创建好job,然后创建定时器,最好将定时器和job都保存到工厂里面即可,当调用了该方法就会自动触发这个定时器,定时器到时间后自动触发job

 

上一篇:浅析security遇到java.lang.IllegalArgumentException:Cannot pass null or empty values to constructor问题处理


下一篇:Mysql:5.7:all triggers are 【FOR EACH ROW】