本篇内容主要讲解“SpringBoot怎么整合Quartz”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot怎么整合Quartz”吧!Quartz是单应用工程中用的比较多的定时任务框架。该定时任务主要可以分为:在内存中的任务:一般定义在工程内部存储,如果工程重启后,若该任务非自动执行的,则不会再开启。可持久化的任务:将任务的特性存储在数据库中,工程重启后可以重新读取原先正在执行的任务,继续执行。corn
是用来控制任务触发的时刻。我列举一些常用的:每秒钟触发每隔5秒执行一次每分钟触发每一小时触发每天10点触发一次每天0点触发一次需要在启动类上加上@EnableScheduling
注解。直接定义一个执行任务,例如:每秒都输出测试
启动类:启动后看控制台中就会输出相应的内容。这里需要我们自己定义任务。通过实现Job
接口,即可定义一个任务,并且我们可以手动去控制这个任务的开启。导入依赖:编写Controller,这是一个固定的写法。指定任务: JobBuilder.newJob(任务.class) .withIdentity(任务名, 任务组).build();
指定cron表达式,创建Trigger:CronScheduleBuilder.cronSchedule(cron表达式);
TriggerBuilder.newTrigger().withIdentity(启动器的名字, 启动器的分组) .withSchedule(cron).build();
调用任务:scheduler.scheduleJob(任务类型对象, 启动器对象)
通过浏览器输入项目的地址,一般默认是localhost:8080/addSchedule
,输入后即可看免费云主机域名到控制台输出了任务执行的输出内容。如果工程重启了,上面的SimpleJob
这个定时任务并不会重新启动。解决的办法就是将任务持久化,Quartz
提供了解决方案,SpringBoot简化了这个操作。我们只需要配置好:数据库、数据源、操作数据库的JDBC即可。依赖:使用mysql数据库:导入它的驱动,mysql-connector-java。使用Druid作为我们的数据源:druid。使用spring-jdbc,帮助我们自动将任务信息存入到数据库中。官网:Downloads (quartz-scheduler.org)以我:quartz-2.3.0-SNAPSHOT为例子:下载源码后,找到jdbcjobstore
这个目录:quartz-2.3.0-SNAPSHOTsrcorgquartzimpljdbcjobstore
然后会有一系列的sql
文件,找到和你数据库匹配的那个sql文件即可,我用的是mysql。执行SQL文件建表,我的数据库名是:scheduled
,各位从我的url中应该也能看出来。建表完成后,所有配置工作结束了,启动程序,重新在浏览器中输入:localhost:8080/addSchedule
,然后刷新一下数据库,就会发现任务被持久化了,此时重启工程后,该任务依旧会自动执行。我们在手动开启该任务的时候会指定:任务的名称和组在暂停和恢复任务时,就需要用JobKey.jobKey(任务名,任务组)
,得到一个JobKey
,然后使用scheduler.pauseJob(jobkey)
即可暂停任务;scheduler.resumeJob(jobKey)
恢复任务。删除任务的时候需要将任务和Trigger都删除,而在上面我们可以拿到这个jobkey
表示任务,我们也需要拿到trigger,同样的我们也定义过启动器的名字和分组。TriggerKey.triggerKey((启动器的名字, 启动器的分组);
也可以拿到trigger
表示启动器。通过以下顺序完整删除任务scheduler.deleteJob(jobKey);scheduler.unscheduleJob(triggerKey);scheduler.pauseTrigger(triggerKey);// 停止触发器// 移除触发器// 删除任务到此,相信大家对“SpringBoot怎么整合Quartz”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
相关推荐: 怎么用一行Python代码实现ChatGPT接入微信机器人
今天小编给大家分享一下怎么用一行Python代码实现ChatGPT接入微信机器人的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。也许所有智能聊天机…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。