Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。还支持分布式调度
第一步,引入依赖:
因为是springboot,所以直接有启动器帮我们配置了底层的文件,我们直接引入启动器即可
第二步,在yml/properties文件中配置相关参数:
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方法
然后编写一个QuartzConfig配置类,在配置类中配置job和trigger触发器的出发时间:
这里使用到了cron表达式,可以直接进入这个网站(https://cron.qqe2.com/),编写需要触发的时间
这种定时器通常用于需要一直间断执行任务,比如上述的0时任务,需要一直轮询的工作
第二种:需要某种特定的条件触发:
同样编写了job后,在特定的条件下触发:
可以在类中,也可以在其他地方,只需要引入SchedulerFactoryBean即可,创建好job,然后创建定时器,最好将定时器和job都保存到工厂里面即可,当调用了该方法就会自动触发这个定时器,定时器到时间后自动触发job