一、环境搭建
1.1 简单说明:
1、springboot集成quartz,使用druid连接池
2、支持http请求任务定时调度,当前支持get、post表单(formdata)、post Json三种请求类型,并记录返回内容
3、通过web界面进行任务管理,包括任务暂停、恢复、修改、历史记录、历史任务查看功能
4、支持调用接口(/quartz/httpJob/add)进行http任务添加
5、根据jobname或jobgroup进行查询
1.2 运行及访问
1、执行sql目录下的create_table.sql文件,建立quartz以及httpjob需要的数据库表
2、修改application.properties中的数据库连接方式
3、访问http://localhost:8080/httpJob.html可通过web界面进行httpjob管理
程序搭建并运行后,添加任务后,主页面如下:
测试任务配置
请求url
http://192.168.3.11:8080/quartz/url/testCurrentTime
对应方法
请求参数:根据实际情况,有参数可传,无参数可不传
Cron:0/10 * * * * ? (每10秒执行一次)
控制台执行结果:
修改任务cron:
点击暂停
点击暂停,可执行记录里查看记录,会发现程序已暂停。
1.3代码分析
4个quartz 操作(暂停,恢复,删除,修改),点击相应方法,分别调用quartz操作
如点暂停,暂停job
如点修改,按新的cronExpression重新构建trigger
springboot 连本地oracle
spring.datasource.url=jdbc:oracle:thin:@192.168.3.11:1521:orcl
spring.datasource.username=zhangm
spring.datasource.password=root123
spring.datasource.driverClassName=oracle.jdbc.driver.OracleDriver
maven 依赖:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>
二、问题
2.1 遇到问题
[ERROR] Failed to execute goal on project quartz: Could not resolve dependencies for project com.example:quartz:jar:0.0.1-SNAPSHOT: Could not find artifact com.oracle:ojdbc14:jar:10.2.0.4.0 in central (https://repo.maven.apache.org/maven2) -> [Help 1]
[ERROR]
原因:oracle的ojdbc.jar是收费的,所以maven的中央仓库中没有这个资源,只能通过配置本地库才能加载到项目中去。
解决: 官网下载 jar包, mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar -Dfile=ojdbc6.jar
2.2 遗留问题:
- mysql 分页关键字limit ,不适用于oralce ,已将分页功能注释掉。
- 执行记录上次执行时间未记录。
三、参考:
- 1: github:https://github.com/helloflygit/springboot-quartz.git
- 2:mysql数据库迁移至Oracle数据库:https://www.jb51.net/article/95345.htm
- cron具体见http://cron.qqe2.com/ cron