SpringBoot2.6.3集成quartz的方式
quartz使用
quartz啟動需要數(shù)據(jù)庫有很多表的支持,這些表的建表腳本可以通過如下方式找到
如何找到quartz的數(shù)據(jù)庫腳本
在這里下載,需要注意的是下載2.2.3這個版本,不知道為什么高版本的反而沒有,真是佛了

集成Springboot
代碼
yml配置
spring:
application:
name: demo-excel
datasource:
url: jdbc:mysql://rm-xxx.mysql.rds.aliyuncs.com:3306/quartz_demo?zeroDateTimeBehavior=convertToNull
password: quartz_demo
username: quartz_demo
driver-class-name: com.mysql.cj.jdbc.Driver
name: datasource1
quartz:
# quartz任務存儲類型:jdbc或memory
job-store-type: jdbc
# 關閉時等待任務完成
wait-for-jobs-to-complete-on-shutdown: true
# 可以覆蓋已有的任務
overwrite-existing-jobs: true
properties:
org:
quartz:
scheduler:
# 調度器實例名稱
instanceName: scheduler
# 調度器實例ID自動生成
instanceId: AUTO
jobStore:
class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
# quartz相關表前綴
tablePrefix: QRTZ_
useProperties: false
threadPool:
class: org.quartz.simpl.SimpleThreadPool
# 設置并發(fā)線程數(shù)量
threadCount: 10
# 指定線程優(yōu)先級
threadPriority: 5
threadsInheritContextClassLoaderOfInitializingThread: true
server:
port: 8190
mybatis-plus:
mapper-locations: classpath*:/mapperxml/*.xml實現(xiàn)一個最簡單的任務,該任務輸出1111
@Component
public class TestJob extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext)
throws JobExecutionException {
// 任務的具體邏輯
System.out.println(1111);
}
}配置這個任務的執(zhí)行計劃
@Configuration
public class QuartzConfig {
@Bean
public JobDetail jobDetail() {
JobDetail jobDetail = JobBuilder.newJob(TestJob.class)
.withIdentity("test", "test")
.storeDurably()
.build();
return jobDetail;
}
public Trigger trigger() {
Trigger trigger = TriggerBuilder.newTrigger()
.forJob(jobDetail())
.startNow()
.withSchedule(CronScheduleBuilder.cronSchedule("* * * * * ?"))
return trigger;
}啟動任務會看到控制臺每秒鐘打印一次1111
進階
上訴任務是配置在代碼中,那么如果我們想把任務配置數(shù)據(jù)庫中,這樣我們就可以做一個定時任務的維護頁面,可以對定時任務的觸發(fā)規(guī)則修改,及修改刪除定時任務應該怎么做呢?
先定義一張存儲定時任務的表
-- auto-generated definition
create table sys_job
(
id bigint not null primary key,
job_name varchar(64) not null comment '任務名稱',
job_group varchar(64) not null comment '任務組名',
method_name varchar(500) null comment '任務方法',
method_params varchar(50) null comment '方法參數(shù)',
cron_expression varchar(255) null comment 'cron執(zhí)行表達式',
misfire_policy varchar(20) default '3' null comment '計劃執(zhí)行錯誤策略(1立即執(zhí)行 2執(zhí)行一次 3放棄執(zhí)行)',
concurrent char default '1' null comment '是否并發(fā)執(zhí)行(0允許 1禁止)',
status char default '0' null comment '狀態(tài)(0正常 1暫停)',
create_by varchar(64) null comment '創(chuàng)建者',
create_time datetime null comment '創(chuàng)建時間',
update_by varchar(64) null comment '更新者',
update_time datetime null comment '更新時間',
remark varchar(500) null comment '備注信息'
)
comment '定時任務調度表';插入一條數(shù)據(jù)
INSERT INTO quartz_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);
同時定義一張執(zhí)行結果記錄表
-- auto-generated definition
create table sys_job_log
(
job_log_id int auto_increment comment '任務日志ID'
primary key,
job_name varchar(64) not null comment '任務名稱',
job_group varchar(64) not null comment '任務組名',
method_name varchar(500) null comment '任務方法',
method_params varchar(50) null comment '方法參數(shù)',
job_message varchar(500) null comment '日志信息',
status char default '0' null comment '執(zhí)行狀態(tài)(0正常 1失?。?,
exception_info varchar(2000) null comment '異常信息',
create_time datetime null comment '創(chuàng)建時間'
)
comment '定時任務調度日志表';項目啟動時讀取這張表里的數(shù)據(jù)放到quartz中執(zhí)行
由于代碼太多了,這邊就不列出來代碼了,demo已經(jīng)上傳到GitHub,項目基于springboot、mybatisplus。啟動加載任務的代碼在com.bxoon.service.impl.SysJobServiceImpl中
到此這篇關于SpringBoot2.6.3集成quartz的文章就介紹到這了,更多相關SpringBoot集成quartz內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Mybatis基于TypeHandler實現(xiàn)敏感數(shù)據(jù)加密
業(yè)務場景中經(jīng)常會遇到諸如用戶手機號,身份證號,銀行卡號,郵箱,地址,密碼等等信息,屬于敏感信息,本文就來介紹一下Mybatis基于TypeHandler實現(xiàn)敏感數(shù)據(jù)加密,感興趣的可以了解一下2023-10-10
Kotlin中?StateFlow?或?SharedFlow?的區(qū)別解析
Kotlin協(xié)程中的StateFlow和SharedFlow是響應式數(shù)據(jù)流,分別用于UI狀態(tài)管理和事件通知,StateFlow有初始值,只保留最新值,適用于UI狀態(tài)管理;SharedFlow沒有初始值,可以配置緩存大小,適用于事件通知,感興趣的朋友一起看看吧2025-03-03
Java的MyBatis框架中Mapper映射配置的使用及原理解析
Mapper用于映射SQL語句,可以說是MyBatis操作數(shù)據(jù)庫的核心特性之一,這里我們來討論Java的MyBatis框架中Mapper映射配置的使用及原理解析,包括對mapper的xml配置文件的讀取流程解讀.2016-06-06
RocketMQ?Broker實現(xiàn)高可用高并發(fā)的消息中轉服務
RocketMQ消息代理(Broker)是一種高可用、高并發(fā)的消息中轉服務,能夠接收并存儲生產(chǎn)者發(fā)送的消息,并將消息發(fā)送給消費者。它具有多種消息存儲模式和消息傳遞模式,支持水平擴展和故障轉移等特性,可以為分布式應用提供可靠的消息傳遞服務2023-04-04

