Spring Boot集成Quartz的任务调度管理工具

Spring Boot+Mybatis+Quartz+vue的任务管理

废话前言:工作中定时任务使用很普遍,使用上也很简单。就想怎么方便管理?就在网上找一些方便操作带有管理界面的项目直接套用。找了很多总感觉不太合适自己(如集成多数据源+多线程+界面管理任务本项目将都集成进来)。后面我经过很多大神写的教程进行了整合,废话不说直接上代码。

1.项目结构
简单说下:
cofig基础加载的配置
controller层
entity实体层
job任务实现基本新增的job都要开发一个业务类
master/slave多数据源层
utils工具类
service业务逻辑层
resources目录下面是yml文件log文件sqlxml文件以及静态html界面文件
在这里插入图片描述
2.pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.0.RELEASE</version>
    <relativePath/>
</parent>

<groupId>quartz</groupId>
<artifactId>quartz</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>2.3.1</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
    </dependency>

    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz-jobs</artifactId>
        <version>2.2.3</version>
    </dependency>

    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper</artifactId>
        <version>5.0.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.4.1</version>
    </dependency>

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.62</version>
    </dependency>

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.10</version>
    </dependency>

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.2</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-support</artifactId>
        <version>2.3</version>
    </dependency>

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.7</version>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.5</version>
            <configuration>
                <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
                <overwrite>true</overwrite>
            </configuration>
        </plugin>
    </plugins>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/**</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>
</project>

3.yml文件
这里配置了多数据源(本地运行需自己创建两个数据库修改对应的链接信息即可)对应初始化文件在config里面。项目中使用两个数据库分别创建test表进行测试

application:
  server:
  name: quartz

server:
    servlet:
      context-path: /quartz/v1
    undertow:
      io-threads: 16
      worker-threads: 256
      buffer-size: 1024
      direct-buffers: true

logging:
  config: classpath:logback-spring.xml
  level:
    com:
      shuyun:
        crmep:
          customized: DEBUG

slave:
  datasource:
    url: jdbc:mysql://localhost:3306/openapi?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8
    username: root
    password: root
    driverClassName: com.mysql.jdbc.Driver
master:
  datasource:
    url: jdbc:mysql://localhost:3306/king?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8
    username: root
    password: root
    driverClassName: com.mysql.jdbc.Driver

4.初始化一张默认的表
这张表是我自己加的,可以根据自己想的自行创建

CREATE TABLE `job` (
`job_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`job_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '任务名称',
`job_group` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '分组',
`job_class` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '对应任务称',
`job_cron_exprssion` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT 'cron表达式',
`job_status` int(1) DEFAULT NULL COMMENT '1启用 2 禁用',
`job_update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE   CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`job_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1027 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='定时任务表'

5.项目启动类
类启动后会加载config中的多数源配置+多线程连接池+自定义启动加载界面+初始化数据库中定时任务

package com.quartz.task;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;

@EnableScheduling
@EnableAsync
@SpringBootApplication
public class QuartzApplication {
    public static void main(String[] args) {
        System.out.println("===========================================QuartzApplication start");
        SpringApplication.run(QuartzApplication.class, args);
        System.out.println("===========================================================success");
    }
}

6.运行效果展示
启动成功默认加载任务列表日志
在这里插入图片描述
跳转后的任务界面
在这里插入图片描述
进行操作修改任务展示
任务新增(如查询的例子进行保存)+任务暂停+任务恢复+任务删除+任务时间修改
界面操作会直接实例化到数据库。(有个问题就是如果数据库中的任务跟真正执行的任务是否对应一致怎么才能知道?在界面请求接口中扩展了一个在运行的任务接口queryRunJob中实现)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结:

项目可自由集成扩展,就是传统的Spring Boot项目。先丢上来代码如下,后面放git上面优化更新。
尊重原创请转至:https://blog.csdn.net/u012907049/article/details/73801122

源代码:
链接: https://pan.baidu.com/s/16M9raSC-iuCWF4MSgMiZfQ 提取码: vnag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值