quartz 2.0持久化到mysql_SpringBoot2.0整合Quartz定时任务(持久化到数据库,更为简单的方式)...
1. pom文件添加依赖
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-quartz
mysql
mysql-connector-java
runtime
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.1
com.mchange
c3p0
0.9.5.2
com.alibaba
druid-spring-boot-starter
1.1.10
2. yml配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/aipyun?serverTimezone=GMT&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
username: root
password: root123
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
initialSize: 2
minIdle: 2
maxActive: 30
#StatViewServlet:
#loginUsername: admin
#loginPassword: admin
quartz:
#相关属性配置
properties:
org:
quartz:
scheduler:
instanceName: DefaultQuartzScheduler
instanceId: AUTO
jobStore:
class: org.quartz.impl.jdbcjobstore.JobStoreTX
driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
tablePrefix: QRTZ_
isClustered: false
clusterCheckinInterval: 10000
useProperties: true
threadPool:
class: org.quartz.simpl.SimpleThreadPool
threadCount: 10
threadPriority: 5
threadsInheritContextClassLoaderOfInitializingThread: true
dataSource:
default:
URL: jdbc:mysql://localhost:3306/aipyun?characterEncoding=utf-8
user: root
password: root123
driver: com.mysql.jdbc.Driver
#数据库方式
job-store-type: jdbc
#初始化表结构
#jdbc:
#initialize-schema: never
我们可以对比下这个配置文件和之前的quartz.properties的区别,基本一模一样,只不过写的格式不一样而已。
3. 业务逻辑代码
/*** 删除job
*
*@paramtriggerName 触发器名称
*@paramtriggerGroup 触发器分组
*@paramjobName 任务名称
*@paramjobGroup 任务分组
*@throwsSchedulerException*/
public void deleteJob(String triggerName, String triggerGroup, String jobName, String jobGroup) throwsSchedulerException {
TriggerKey triggerKey=TriggerKey.triggerKey(triggerName, triggerGroup);
scheduler.pauseTrigger(triggerKey);
scheduler.unscheduleJob(triggerKey);
JobKey jobKey=JobKey.jobKey(jobName, jobGroup);
scheduler.deleteJob(jobKey);
}/*** 修改定时任务
*
*@paramoldTriggerKey 需要修改的TriggerKey 也就是唯一标识
*@paramcron 新的cron表达式*/
public voidupdateJob(TriggerKey oldTriggerKey, String cron) {
CronScheduleBuilder scheduleBuilder=CronScheduleBuilder.cronSchedule(cron);
CronTrigger cronTrigger=TriggerBuilder.newTrigger()
.withIdentity(oldTriggerKey).withSchedule(scheduleBuilder).build();try{
scheduler.rescheduleJob(oldTriggerKey, cronTrigger);
}catch(SchedulerException e) {
e.printStackTrace();
}
}/*** 新增job任务
*
*@paramjobName job名称
*@paramjobGroupName job分组名称
*@paramtriggerName 触发器名称
*@paramtriggerGroupName 触发器分组名称
*@paramjobClass 需要执行的job.class
*@paramcron cron 表达式
*@throwsSchedulerException*/
public voidaddJob(String jobName, String jobGroupName,
String triggerName, String triggerGroupName, Class jobClass, String cron)throwsSchedulerException {
CronScheduleBuilder cronScheduleBuilder=CronScheduleBuilder.cronSchedule(cron);
JobDetail jobDetail=JobBuilder.newJob(jobClass).withIdentity(jobName, jobGroupName).build();
Trigger trigger=TriggerBuilder.newTrigger().withIdentity(triggerName, triggerGroupName)
.withSchedule(cronScheduleBuilder).build();
scheduler.scheduleJob(jobDetail, trigger);
}
关于spring-boot-starter-quartz
鄙人用的开发工具是idea,可以直接查看源码,至于用eclispe的怎么查看源码我就不知道了。
我们找到Idea的External Libraries并且展开spring-boot-autoconfigure-2.0.0.RELEASE.jar,找到org.springframework.boot.autoconfigure.quartz,该目录就是SpringBoot为我们提供的Quartz自动化配置源码实现,在该目录下有如下所示几个类:
QuartzAutoConfiguration该类是自动配置的主类,内部配置了SchedulerFactoryBean,相当于我们之前自己配的SchedulerFactoryBean类。
JobStoreType是一个枚举:表示quartz的存储方式:RAM 或者JDBC。
QuartzProperties配置类:从yml或者properties中读取配置信息。
quartz 2.0持久化到mysql_SpringBoot2.0整合Quartz定时任务(持久化到数据库,更为简单的方式)...相关推荐
- 项目ITP(五) spring4.0 整合 Quartz 实现任务调度
2014-05-16 22:51 by Jeff Li 前言 系列文章:[传送门] 项目需求: 二维码推送到一体机上,给学生签到扫描用. 然后须要的是 上课前20分钟 .幸好在帮带我的学长做 p2p ...
- Spring整合Quartz实现持久化、动态设定时间
一.spring整合 网上一搜有很多整合的方式,这里我采用了其中的一种(暂时还没有对其他的方法研究过). 对于spring的整合其中的任务,spring提供了几个类.接口(这些类都实现了Job接口): ...
- SpringBoot整合Quartz执行持久化定时任务
使用: 个人博客项目,定时刷新帖子排名用到了定时任务,在这里记录下来SpringBoot整合Quartz的基本使用,记录的同时也希望能帮助到大家. 1.什么是Quartz 官方介绍: Quartz是一 ...
- springboot2整合Quartz持久化定时任务管理界面
此案例在天降风云博主的基础上进行了补充 Quartz提供两种基本作业存储类型.第一种类型叫做RAMJobStore,第二种类型叫做JDBC作业存储.在默认情况下Quartz将任务调度的运行信息保存在内 ...
- 简单的通过DockerFile 构建自己的nacos镜像 并持久化到 MySQL8.0
目录 一. 准备内容: 1. Docker.这里暂时使用 Windows 版来演示 2. 获取nacos的docker 镜像源码(构建镜像要用到) 3. 下载nacos的项目的压缩包(若不指定版 ...
- cxf 配置文件服务器端,cxf3.0.x与spring3.2整合
? ? 进来接到webservice相关项目,本人一直从事后台底层开发,初接项目一头雾水,网上搜索之后发现大部分cxf与spring整合都是2.X的老版 本,与我本人需求出入不小,后经我与同事共同研究 ...
- 金蝶K3 15.0 K/3 V15.0第13个整合补丁PT153081(2020年12月,整合55个补丁)PT151645 PT150588 PT149587 PT148471 PT146240
金蝶K3 15.0 K/3 V15.0第13个整合补丁PT153081(2020年12月,整合55个补丁) 历史发放的整合补丁如下: 第1个整合补丁 PT137552 第2个整合补丁 PT138993 ...
- SSM项目整合Quartz
一.背景 SSM项目中要用到定时器,初期使用Timer,后来用spring 的schedule,都比较简单,所以功能比较单一而且他们不能动态的配置时间.后来就研究quartz,准备整合到项目中.Qua ...
- Spring整合Quartz集群部署
Spring整合Quartz集群部署 Quartz的分布式模式 数据表创建 quartz.properties spring-job.xml Quartz的分布式模式 集群中的每个节点都是一个独立的Q ...
最新文章
- python中的正则表达式语法_Python基础教程之正则表达式基本语法以及re模块
- 简书的css排版,css格式化排版
- 【springmvc+mybatis项目实战】杰信商贸-6.重点知识回顾
- Android APK 签名文件MANIFEST.MF、CERT.SF、CERT.RSA分析
- python强类型_python动态性强类型用法实例
- angularJS中,怎么阻止事件冒泡
- vue项目:this.function()中关于:this指针失效的问题
- 【转自小峰博客】协调器的启动【自动模式】
- Quest v31 Passthrough API无法透视的问题解决办法
- 20155307 《Java程序设计》课堂实践项目数据库
- linux入门生信,优秀学员的学习方法展示
- 泰勒公式和海森矩阵(Hessian-matrix)
- [ARM-assembly]-ARMV8-A64指令编码介绍
- Server、Service和Servlet的区分
- 摩根大通从AWS和Azure挖人,云计算人才大战开始
- [No0000134]C#中的委托,匿名方法和Lambda表达式
- 手把手教你写一个点菜系统(附源码)
- 武器瞄准镜 - MOD和相关程序讲解
- 2022年中国智能家居产业链图谱 | 产业链全景图
- Java基础 -> 从键盘获取不同的输入类型(String,int,double,boolean)(Scanner)