文档章节

Spring Boot--自定义Starter之spring-boot-starter-quartz

大大枣
 大大枣
发布于 2018/04/03 09:48
字数 551
阅读 608
收藏 4

痛点

在Spring中使用计划任务,有两种方案可供选择:一、用Spring原生的计划任务,使用起来非常简单,只需要用到@Scheduled注解即可;二、集成Quartz来做计划任务,需要配置大量的Quartz原生类。  
对于第一种来说,局限性在于不支持计划任务的集群,如果有多个计划任务的项目一起启动的话,每个JVM都会执行一遍预定时间的计划任务。对于Quartz来说,可以通过集群来保证在预定的时间点只会执行一次对应的计划任务。  
这里有一个问题呢,就是Spring集成了Quartz,但却并没有提供像@Scheduled这样好用的注解。  
这个项目就是为了解决上述问题而生的,让Quartz的集成变得更简单直接,同时支持Quartz的集群模式。    

Quartz集群

先说一下Quartz的集群。  
Quartz的集群有赖于数据库的支持,所以这里我们需要一个专门的库。建表的sql在resources/sqls下面(只支持MySQL),根据要用的数据库引擎选择不同的sql文件。   这里要注意一下,这个建表的sql文件不是每个版本都适用的,这里只适用于quartz的2.2.3版本。如果你要换版本,去官网下载对应版本的quartz,里面有相应的sql。   建完库之后,在使用这个Starter的时候,配置文件中需要有这些属性:

quartz.scheduler.instanceName=
quartz.datasource.driver-class-name=
quartz.datasource.url=
quartz.datasource.username=
quartz.datasource.password=
quartz.datasource.maxConnections=

分别是quartz的实例名以及一些数据库配置。    

@QuartzScheduled注解

@QuartzScheduled和@Scheduled使用起来比较相似,注解到方法上即可。  
@QuartzScheduled目前只支持cron表达式,例如:

    /** 凌晨自动同步一次 */
    @QuartzScheduled("20 0 0 * * ?")
    public void execute() {
        alarmService.sendSyncDingUsers();
    }

开源地址

码云:spring-boot-starter-quartz

© 著作权归作者所有

共有 人打赏支持
大大枣
粉丝 20
博文 30
码字总数 34742
作品 1
朝阳
架构师
私信 提问
第二章——Spring Boot启动器与依赖管理

强烈推荐选择支持依赖管理和可以发布到“Maven中央”仓库的构建系统。推荐使用Maven或Gradle。Spring Boot可以使用其他构建系统(例如,Ant),但支持得并不是很好。 1 依赖管理 Spring Boo...

Leech
2018/02/04
0
0
spring boot 之依赖

spring boot 虽然不强制使用特殊的依赖。但是其提供了一些非常高效的依赖。其中最有如下几个: spring-boot-starter-parent spring-boot-starter-data-jpa数据库连接的依赖。 spring-cloud-c...

乾坤刀
2018/05/28
0
0
【Spring Boot 系列 自定义启动器Starter】

对应常用的功能组件,我们可以将其制作成一个Starter.这样在整个系统中都能达到只需要导入依赖即可使用功能,无需其他配置。 1、Starter命名规则 1.1、官方命名方式 前缀: 规范: 示例: 1....

HansonReal
2018/09/14
0
0
Spring Boot中Starter是什么

比如我们要在Spring Boot中引入Web MVC的支持时,我们通常会引入这个模块spring-boot-starter-web,而这个模块如果解压包出来会发现里面什么都没有,只定义了一些POM依赖。 经过研究,Start...

easonjim
2017/09/30
0
0
自定义spring boot starter三部曲之一:准备工作

版权声明:欢迎转载,请注明出处,谢谢。 https://blog.csdn.net/boling_cavalry/article/details/82956512 从本章开始,一起实战一个自定义的spring boot starter,整个系列共三篇文章,内容...

博陵精骑
2018/10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

matlab-自控原理 step、impulse 阶跃、脉冲响应 已知传递函数

  matlab : R2018a 64bit     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   已知传递函数,求其阶跃响应......

志成就
4分钟前
0
0
JDBC事务操作

事务特点:ACID 原子性(Atomicity):事务管理的系列操作必须全部完成,否则就算失败(类似操作系统的PV原语、信号量) 一致性(Consistency):同一个事务只要起始条件一致最终执行的结果一致 隔...

ZeroneLove
6分钟前
0
0
【scala】3.数组相关操作

简介 在本章中,我们将会学到如何在scala中操作数组。 1、定长数组 // 初始化长度为10的定长数组,每一个元素的值为0val nums = new Array[Int](10)// nums: Array[Int] = Array(0, 0, 0, ...

Areya
7分钟前
0
0
教你零基础如何快速入门大数据技巧

现在是大数据时代,很多人都想要学习大数据,因为不管是就业前景还是薪资都非常的不错,不少人纷纷从其他行业转型到大数据行业,那么零基础的人也想要学习大数据怎么办呢?下面一起探讨下零基...

董黎明
15分钟前
0
0
Nginx 配置 root目录、虚拟目录alias

Nginx是通过 alias 设置虚拟目录,在Nginx的配置中,alias目录和root目录是有区别的。 alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的; root指定...

Yue_Chen
32分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部