博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot--自定义Starter之spring-boot-starter-quartz
阅读量:5807 次
发布时间:2019-06-18

本文共 1040 字,大约阅读时间需要 3 分钟。

hot3.png

痛点

在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();    }

开源地址

码云:

转载于:https://my.oschina.net/lizaizhong/blog/1789026

你可能感兴趣的文章
Http、TCP/IP协议与Socket之间的区别(转载)
查看>>
解决Unable to load R3 module ...VBoxDD.dll (VBoxDD):GetLastError=1790
查看>>
.net excel利用NPOI导入oracle
查看>>
vrpie在Visio Studio 中无法调试的问题
查看>>
第六课:数据库的基本工具
查看>>
关于二叉树重构的思索
查看>>
$_SERVER['SCRIPT_FLENAME']与__FILE__
查看>>
skynet实践(8)-接入websocket
查看>>
系统版本判断
查看>>
关于Css选择器优先级
查看>>
My97DatePicker 日历插件
查看>>
0603 学术诚信与职业道德
查看>>
小点心家族第3位成员——楼层定位效果
查看>>
Knockout.Js官网学习(enable绑定、disable绑定)
查看>>
hive基本操作与应用
查看>>
excel快捷键设置
查看>>
poj3692
查看>>
python之信号量【Semaphore】
查看>>
html5纲要,细谈HTML 5新增的元素
查看>>
Android应用集成支付宝接口的简化
查看>>