SpringBoot2.6.3怎么集成quartz
这篇文章主要介绍了SpringBoot2.6.3怎么集成quartz的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot2.6.3怎么集成quartz文章都会有所收获,下面我们一起来看看吧。
quartz使用quartz启动需要数据库有很多表的支持,这些表的建表脚本可以通过如下方式找到
如何找到quartz的数据库脚本
在这里下载,需要注意的是下载2.2.3这个版本,不知道为什么高版本的反而没有,真是佛了
代码
yml配置
spring:application:name:demo-exceldatasource:url:jdbc:mysql://rm-xxx.mysql.rds.aliyuncs.com:3306/quartz_demo?zeroDateTimeBehavior=convertToNullpassword:quartz_demousername:quartz_demodriver-class-name:com.mysql.cj.jdbc.Drivername:datasource1quartz:#quartz任务存储类型:jdbc或memoryjob-store-type:jdbc#关闭时等待任务完成wait-for-jobs-to-complete-on-shutdown:true#可以覆盖已有的任务overwrite-existing-jobs:trueproperties:org:quartz:scheduler:#调度器实例名称instanceName:scheduler#调度器实例ID自动生成instanceId:AUTOjobStore:class:org.springframework.scheduling.quartz.LocalDataSourceJobStoredriverDelegateClass:org.quartz.impl.jdbcjobstore.StdJDBCDelegate#quartz相关表前缀tablePrefix:QRTZ_useProperties:falsethreadPool:class:org.quartz.simpl.SimpleThreadPool#设置并发线程数量threadCount:10#指定线程优先级threadPriority:5threadsInheritContextClassLoaderOfInitializingThread:trueserver:port:8190mybatis-plus:mapper-locations:classpath*:/mapperxml/*.xml
实现一个最简单的任务,该任务输出1111
@ComponentpublicclassTestJobextendsQuartzJobBean{@OverrideprotectedvoidexecuteInternal(JobExecutionContextjobExecutionContext)throwsJobExecutionException{//任务的具体逻辑System.out.println(1111);}}
配置这个任务的执行计划
@ConfigurationpublicclassQuartzConfig{@BeanpublicJobDetailjobDetail(){JobDetailjobDetail=JobBuilder.newJob(TestJob.class).withIdentity("test","test").storeDurably().build();returnjobDetail;}publicTriggertrigger(){Triggertrigger=TriggerBuilder.newTrigger().forJob(jobDetail()).startNow().withSchedule(CronScheduleBuilder.cronSchedule("*****?"))returntrigger;}
启动任务会看到控制台每秒钟打印一次1111
上诉任务是配置在代码中,那么如果我们想把任务配置数据库中,这样我们就可以做一个定时任务的维护页面,可以对定时任务的触发规则修改,及修改删除定时任务应该怎么做呢?
先定义一张存储定时任务的表
--auto-generateddefinitioncreatetablesys_job(idbigintnotnullprimarykey,job_namevarchar(64)notnullcomment'任务名称',job_groupvarchar(64)notnullcomment'任务组名',method_namevarchar(500)nullcomment'任务方法',method_paramsvarchar(50)nullcomment'方法参数',cron_expressionvarchar(255)nullcomment'cron执行表达式',misfire_policyvarchar(20)default'3'nullcomment'计划执行错误策略(1立即执行2执行一次3放弃执行)',concurrentchardefault'1'nullcomment'是否并发执行(0允许1禁止)',statuschardefault'0'nullcomment'状态(0正常1暂停)',create_byvarchar(64)nullcomment'创建者',create_timedatetimenullcomment'创建时间',update_byvarchar(64)nullcomment'更新者',update_timedatetimenullcomment'更新时间',remarkvarchar(500)nullcomment'备注信息')comment'定时任务调度表';
插入一条数据
INSERTINTOquartz_demo.sys_job(id,job_name,job_group,method_name,method_params,cron_expression,misfire_policy,concurrent,status,create_by,create_time,update_by,update_time,remark)VALUES(1,'testJob2','test2','exec',null,'*****?','2','1','0',null,null,null,null,null);
同时定义一张执行结果记录表
--auto-generateddefinitioncreatetablesys_job_log(job_log_idintauto_incrementcomment'任务日志ID'primarykey,job_namevarchar(64)notnullcomment'任务名称',job_groupvarchar(64)notnullcomment'任务组名',method_namevarchar(500)nullcomment'任务方法',method_paramsvarchar(50)nullcomment'方法参数',job_messagevarchar(500)nullcomment'日志信息',statuschardefault'0'nullcomment'执行状态(0正常1失败)',exception_infovarchar(2000)nullcomment'异常信息',create_timedatetimenullcomment'创建时间')comment'定时任务调度日志表';
项目启动时读取这张表里的数据放到quartz中执行
由于代码太多了,这边就不列出来代码了,demo已经上传到GitHub,项目基于springboot、mybatisplus。启动加载任务的代码在com.bxoon.service.impl.SysJobServiceImpl
中
关于“SpringBoot2.6.3怎么集成quartz”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“SpringBoot2.6.3怎么集成quartz”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。