SpringBoot系列:Spring Boot集成定时任务Quartz,java百度云短信发送
然后创建QuartzConfig,接着定义JobDetail,JobDetail由JobBuilder构建,同时关联了任务QuartzJob1。
@Configuration
public class QuartzConfig {
@Bean
public JobDetail jobDetail1(){
return JobBuilder.newJob(QuartzJob1.class).storeDurably().build();
}
}
最后我们需要定义定时调度Trigger,简单实现类SimpleScheduleBuilder用于构建Scheduler,TriggerBuilder则用于构建Trigger。
@Configuration
public class QuartzConfig {
@Bean
public JobDetail jobDetail1(){
return JobBuilder.newJob(QuartzJob1.class).storeDurably().build();
}
@Bean
public Trigger trigger1(){
SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(1) //每一秒执行一次
.repeatForever(); //永久重复,
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
一直执行下去
return TriggerBuilder.newTrigger()
.forJob(jobDetail1())
.withSchedule(scheduleBuilder)
.build();
}
}
这样一个Quartz定时任务就配置完成了。
其实Job的定义也可以使用内部类,这样可以省去Job类的创建,例如下面定时任务2 jobDetail2和trigger2。
@Bean
public JobDetail jobDetail2(){
QuartzJobBean quartzJob2 = new QuartzJobBean() {
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
System.out.println(“内部类quartzJob2----” sdf.format(new Date()));
}
};
return JobBuilder.newJob(quartzJob2.getClass()).storeDurably().build();
}
@Bean
public Trigger trigger2(){
//JobDetail的bean注入不能省略
//JobDetail jobDetail3 = JobBuilder.newJob(QuartzJob2.class).storeDurably().build();
SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(2) //每2秒执行一次
.repeatForever(); //永久重复,一直执行下去
return TriggerBuilder.newTrigger()
.forJob(jobDetail2())
.withSchedule(scheduleBuilder).build();
}
启动程序,我们就可以看到控制台的时间输出了。
同时Quartz是支持数据持久化的,可以将定时调度信息持久化到数据库。
选择持久化到数据库,我们需要创建对应的表,建表语句可以在Quartz官网进行下载,解压后在docs\dbTables目录下寻找对应数据库的SQL脚本。
为了方便,我也将该文件放在了项目源码resources里。
操作数据库,我们引入相关的依赖。若有ORM框架,例如mybatis,hibernate或者jpa,则无需再引入jdbc依赖。
mysql
mysql-connector-java
runtime
com.alibaba
druid-spring-boot-starter
1.1.10
org.springframework.boot
spring-boot-starter-jdbc
在application.yml配置文件中,我们对quartz持久化方式进行声明。
server:
port: 10900
spring:
profiles:
active: dev
quartz:
job-store-type: jdbc #持久化到数据库
properties:
org:
quartz:
datasource:
新版驱动从com.mysql.jdbc.Driver变更为com.mysql.cj.jdbc.Driver
driver-class-name: com.mysql.cj.jdbc.Driver
数据源需要添加时间标准和指定编码格式解决乱码 You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: 1234
scheduler:
instancName: clusteredScheduler
instanceId: AUTO
jobStore:
class: org.quartz.impl.jdbcjobstore.JobStoreTX
driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate #StdJDBCDelegate说明支持集群
tablePrefix: QRTZ_
isClustered: true
clusterCheckinInterval: 1000
useProperties: false
threadPool:
class: org.quartz.simpl.SimpleThreadPool
threadCount: 20
threadPriority: 5
这里主要就是job-store-type: jdbc,表示持久化到数据库,然后就是数据源,由于该演示项目没有其他ORM的数据源,所以这里将数据源信息定义在了quartz节点下的datasource节点,如果已经存在,可使用同一个属性配置,当然最关键的是QuartzDataSource声明。
SpringBoot系列:Spring Boot集成定时任务Quartz,java百度云短信发送相关推荐
- Java阿里云短信发送工具类
短信服务API介绍 阿里云短信发送:调用SendSms发送短信_短信服务-阿里云帮助中心 <!--springboot项目阿里云发送短信--> <dependency>< ...
- SpringBoot系列:Spring Boot集成定时任务Quartz
一.关于Quartz Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.在java企业级应用中,Q ...
- Java 阿里云短信服务的集成
Java 阿里云短信服务的集成 1.短信发送API(SendSms)---JAVA [ https://help.aliyun.com/document_detail/55284.html?spm= ...
- java阿里云短信服务开通验证码功能实现(1)
java阿里云短信验证码功能实现篇(一) 最近有朋友咨询java短信验证码,系统注册登录,修改密码时使用,作为小白的我也是第一次搞这个,若有不好之处,忘见谅,废话不多说,我将写两篇文章来说明如何开通短 ...
- Tomcat8源码分析系列-spring boot集成tomcat
前言 本文基于 spring boot 1.5.9 spring boot 支持目前主流的 servlet 容器,包括 tomcat.jetty.undertow,可以在我们的项目中方便地集成这些 s ...
- java spring-boot-starter-mail邮件和阿里云华为云短信发送全套
短信API都是需要对接平台的,平台会提供参考代码比较简单,但是邮件是免费的,除了springboot,还能用javaxmail(我记得是,大家可以查查资料) 文章目录 前言 一.spring-boot ...
- java阿里云短信对接
技术栈: Spring boot 2.x 阿里云短信sdk java版本1.8 注意事项: 本文内的"**.**"需要自己替换为自己的路径. 常量内的"**"需 ...
- java阿里云短信实现
准备工作: 需要获取以上对应的参数: 签名名称 模板CODE AccessKey ID AccessKey Secret 以上四个参数为必要的 接口api文档:SendSms - 发送短信 (aliy ...
- 腾讯云短信发送api(SendSms)--java
一.申请腾讯云帐号并开通短信服务(开通短信服务需要手机实名认证) 1.注册或登录地址:登录 - 腾讯云 2.登录后搜索:短信 3.创建签名,注意,这里的签名内容在代码里面要用到.(提交审核两个小时之 ...
最新文章
- STC15分时内核中函数指针的使用问题
- 判断数组中某个元素除自身外是否和其他数据不同_布隆过滤器,我也是个处理过 10 亿数据的人...
- Express中使用ejs新建项目以及ejs中实现传参、局部视图include、循环列表数据的使用
- PAT—— 害死人不偿命的(3n+1)猜想 (1001)
- 项目管理 - 学习总目录
- Android 第十五课 如何使用LitePal从SQLite数据库中删除数据(十四课用来保留讲解如何向SQLite数据库中存入数据)
- 5.19 - Stacks and Queues
- 深入MTK平台bootloader启动分析笔记
- C# 使用 Windows 消息队列机制
- 手机中如何处理Excel格式转换PDF格式
- 第九章 CSS-DOM
- 防止撤回插件 Android,微信防撤回插件
- android手机恢复出厂设置,手机强制恢复出厂设置方法
- android自动画廊,Android3D画廊效果与自动轮播Banner
- PS带框的对号怎么打
- HDU6438(优先队列+思维)
- 免费SSL证书和付费SSL证书的区别在哪儿?
- Thingsboard 物联网平台 CoAP 协议介绍
- Franka Emika Panda机械臂规划路径时,rviz中手爪显示碰撞
- Android内存泄漏检测工具使用手册
热门文章
- base64接收图片
- 解决微信浏览器video标签自动播放视频失效
- 中国移动物联网开放平台OneNET学习笔记(1)——设备接入(MQTT协议)OneNET Studio篇
- android 渐变歌词,Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果
- iOS内存分配与五大区域
- 如何清除 iPhone 上的其他存储来释放空间
- sql 当为空值时置0_SQL查询值为空时默认输出0的方法
- 混合个人训练第四十六场(A,B题解) A	数论线代全家桶 (all) B: 看星星 (stars)
- poj3253求切割木板开销最少是多少, 赫夫曼编码
- View UI (iview)表格合并单元格(行/列合并)