java quartz 销毁任务_springboot整合quartz实现动态添加、修改、删除、停止job(一)

什么是Quartz?

一个定时任务调度框架,简单易用,功能强大可以使实现定时任务的。

优点:支持集群下定时任务处理

支持任务并发阻塞(上一个任务完成后,才能继续下一个任务)

支持通过API对任务的操作,例如新增任务、修改、启动、暂停、停止(可以在代码中进行调用,而无需修改配置文件再次部署)

支持的数据库种类被较多

目标在Spring Boot中集成Quartz

使用MySql数据库(程序自动导入,无需人工执行脚本)

使用Spring 自身配置的数据源(不再单独配置qz数据源)

通过代码实现动态化添加、修改、暂停、终止job

开发环境JDK版本1.8

Spring Boot 版本:2.3.3.RELEASE

开发工具:eclipse

开发实践

本章节将从Pom依赖配置开始,直到成功运行起该程序为止,为各位朋友提供真实可行的代码实现

pom配置

关于Pom.xml中的配置,有两种方式,第一种使用spring-boot封装的依赖,第二种使用org.quartz的依赖

第一种方式:

org.springframework.boot

spring-boot-starter-quartz

这种依赖的好处是你不需要考虑qz的版本号,Spring boot会根据自身的版本来适应不同的quartz版本,但是缺点也很明显,你无法使用其他版本的quartz(不同版本的QZ结构稍有差异),而且在这个封装的依赖中,其实里面也仅仅是指定了org.quartz的依赖,并没有其他的配置或者逻辑

第二种方式

org.quartz-scheduler

quartz

2.3.2

org.quartz-scheduler

quartz-jobs

2.3.2

这种方式是直接引用的quartz,就是第一种方式中的配置的依赖,但是在这里你就可以自己选择quartz的版本(注意:不同版本的qz结构有差异,Spring boot读取文件时有可能会出现问题。例如在Spring boot 2.3.3.RELEASE中,2.2.1的版本自动生成表结构时会报错--jar包中没有对应的sql脚本,而2.3.2就不存在这个问题)

您可以根据自己的需求来选择哪种依赖方式(以上两种只需要使用其中任何一种即可,无需都使用)

quartz.yml配置################### Quartz配置 start ##################################################

server:

port: 8080

servlet:

context-path: /quartz

spring:

application:

name: demo

#连接池配置

datasource:

#账号配置

url: jdbc:mysql://localhost:3306/qz_table?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai

username: root

password: 123456

driver-class-name: com.mysql.cj.jdbc.Driver

#hikari数据库连接池

hikari:

pool-name: Retail_HikariCP

minimum-idle: 5 #最小空闲连接数量

idle-timeout: 180000 #空闲连接存活最大时间,默认600000(10分钟)

maximum-pool-size: 10 #连接池最大连接数,默认是10

auto-commit: true  #此属性控制从池返回的连接的默认自动提交行为,默认值:true

max-lifetime: 1800000 #此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟

connection-timeout: 30000 #数据库连接超时时间,默认30秒,即30000

connection-test-query: SELECT 1

quartz:

#          dataSource:

#            default:

#              driver: com.mysql.jdbc.Driver

#              URL: jdbc:mysql://localhost:3306/jobconfig?useUnicode=true&characterEncoding=utf8

#              user: root

#              password: 12345678

#              maxConnections: 5

#相关属性配置

properties:

org:

quartz:

scheduler:

instanceName: quartzScheduler

instanceId: AUTO

jobStore:

class: org.quartz.impl.jdbcjobstore.JobStoreTX

driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate

tablePrefix: qrtz_

isClustered: false

clusterCheckinInterval: 10000

useProperties: false

threadPool:

class: org.quartz.simpl.SimpleThreadPool

threadCount: 10

threadPriority: 5

threadsInheritContextClassLoaderOfInitializingThread: true

#数据库方式

job-store-type: JDBC

#初始化表结构

jdbc:

initialize-schema: never

#mybatis配置

mybatis:

type-aliases-package: com.example.demo.entity

mapper-locations: classpath:mapper/*.xml

#分页配置, pageHelper是物理分页插件

pagehelper:

#4.0.0以后版本可以不设置该参数,该示例中是5.1.4

helper-dialect: mysql

#启用合理化,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页

reasonable: true

################### Quartz配置 End ###################################################

注意:本文配置使用的是yml文件方式,如果您想使用.properties方式,请将上面的冒号改成等号

本文中使用的quartz没有单独配置数据源,而是使用的您在Spring boot中已经配置的数据源(自动识别,可以看下源码,默认支持C3p0,hikari等几种)

本文中默认表结构初始化方式为initialize-schema: never(共有三种方式:always-每次启动都初始化数据库,never-不初始化表结构,embedded,您可以在首次运行时将此方式设置为always,然后再改

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值