一、背景

1.因为需求需要,所以我们用到了定时任务,但是之前使用的定时任务是基于spring的xml形式,但是在微服务的模块中这显然不太合适,因为单独的模块,做成了独立的服务,所以我最终选择了基于注解的方式来完成我们的需求。

2.所以我写了一个小demo来让大家借鉴先怎么使用springboot与quartz的合起来使用。下面我们就进入今天的学习内容。

二、quartz的简介

1.Quartz是一个开源的任务调度框架。基于定时、定期的策略来执行任务是它的核心功能,比如x年x月的每个星期五上午8点到9点,每隔10分钟执行1次。

2.Quartz有3个核心要素:调度器(Scheduler)、任务(Job)、触发器(Trigger)。

2.1.Job(任务):是一个接口,有一个方法void execute(),可以通过实现该接口来定义需要执行的任务(具体的逻辑代码)。
2.2.JobDetail:Quartz每次执行job时,都重新创建一个Job实例,会接收一个Job实现类,以便运行的时候通过newInstance()的反射调用机制去实例化Job.JobDetail是用来描述Job实现类以及相关静态信息,比如任务在scheduler中的组名等信息。
2.3.Trigger(触发器):描述触发Job执行的时间触发规则实现类SimpleTrigger和CronTrigger可以通过crom表达式定义出各种复杂的调度方案。
2.4.Calendar:是一些日历特定时间的集合。一个Trigger可以和多个 calendar关联,比如每周一早上10:00执行任务,法定假日不执行,则可以通过calendar进行定点排除。
2.5.Scheduler(调度器):代表一个Quartz的独立运行容器。Trigger和JobDetail可以注册到Scheduler中。Scheduler可以将Trigger绑定到某一JobDetail上,这样当Trigger被触发时,对应的Job就会执行。一个Job可以对应多个Trigger,但一个Trigger只能对应一个Job。

三、demo搭建
3.1.pom依赖

<!--spring boot集成quartz-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

3.2.Job具体的业务

public class TimeJob extends QuartzJobBean {@Overrideprotected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {//获取JobDetail中关联的数据String msg = (String) jobExecutionContext.getJobDetail().getJobDataMap().get("msg");System.out.println("current time :"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "---" + msg);}
}

3.3.JobConfig配置

@Configuration
public class QuartzConfig {@Beanpublic JobDetail printTimeJobDetail(){return JobBuilder.newJob(DateTimeJob.class)//PrintTimeJob我们的业务类.withIdentity("TimeJob")//可以给该JobDetail起一个id//每个JobDetail内都有一个Map,包含了关联到这个Job的数据,在Job类中可以通过context获取.usingJobData("msg", "Hello Quartz")//关联键值对.storeDurably()//即使没有Trigger关联时,也不需要删除该JobDetail.build();}@Beanpublic Trigger printTimeJobTrigger() {CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/1 * * * * ?");return TriggerBuilder.newTrigger().forJob(printTimeJobDetail())//关联上述的JobDetail.withIdentity("quartzTaskService")//给Trigger起个名字.withSchedule(cronScheduleBuilder).build();}
}

springboot+quartz定时任务相关推荐

  1. SpringBoot Quartz 定时任务详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/80657415 本文出自[赵彦军的博客] Quartz 简介 在 JavaEE系统中 ...

  2. springboot+Quartz整合!!!简单实用

    一.什么是Quartz 在Quartz官网上是这么写的 Quartz官网 1.Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制 ...

  3. 第四十章:基于SpringBoot Quartz完成定时任务分布式多节点负载持久化

    在上一章[第三十九章:基于SpringBoot & Quartz完成定时任务分布式单节点持久化]中我们已经完成了任务的持久化,当我们创建一个任务时任务会被quartz定时任务框架自动持久化到数 ...

  4. Springboot 使用quartz 定时任务 增删改查

    前段时间公司项目用到了 定时任务 所以写了一篇定时任务的文章 ,浏览量还不错 , Springboot 整合定时任务 ) 所以就准备写第二篇, 如果你是一名Java工程师,你也可以会看到如下的页面 , ...

  5. Springboot集成quartz定时任务可视化配置​​​​​​​

    转自我的个人博客:Springboot集成quartz定时任务可视化配置 使用quartz定时任务已经有一段时间了,今天记录一下Springboot 2.x集成Quartz. 1.引入quartz j ...

  6. springboot+quartz构建定时任务

    springboot+quartz构建定时任务 开发环境 Quartz的3个基本要素 如何使用 引入相关依赖 resource目录下创建quartz.properties quartz需要用到的表 实 ...

  7. SpringBoot+Quartz动态管理定时任务

    前置理论: 1.小顶堆(适合任务少的,因为向下调整耗费性能) 堆:是一完全二叉树(除了最后一层节点其他层都达到最大节点数,且最后一层都靠左排列):堆中某个节点的值总不大于或不小于其父节点. 定时任务是 ...

  8. springboot、quartz定时任务未触发

    spring boot.quartz定时任务不触发 定时每隔5分钟触发一次 但是定时任务没有触发,不知道为什么? 若您知道原因,请留言谢谢 解决办法 针对多模块,若要一个web模块启动定时器模块,那么 ...

  9. Springboot集成Quartz定时任务yml文件配置方式

    构建maven项目,引入maven依赖包 其中quartz.quartz-jobs.spring-boot-starter-quartz.spring-context-support  四个依赖包为q ...

  10. 解决springboot + quartz的分布式问题以及dolphinscheduler

    springboot + quartz 将quartz存储默认在内存中, 多节点部署时存在分布式问题. 改成基于数据库的quartz分布式集群解决方案, 参考官方文档, 需要为quartz单独配置da ...

最新文章

  1. 解题报告(一)E、(BZOJ4589)Hard Nim(博弈论 + FWT)
  2. 把价钱转化为xx.xx的形式
  3. JavaScript 调试
  4. 深度学习-人工神经网络概述
  5. android xml事件,安卓事件
  6. java 方法 示例_带有示例的Java EnumSetSupplementOf()方法
  7. mysql语言的创建模式文件_南开17春学期《数据库应用系统设计》在线作业 免费答案...
  8. 计算机窗口设计java实验,Java银行取款异常处理计算器设计图形用户界面设计实验报告.doc...
  9. 通过system用户操作oracle数据库相关
  10. springmvc jsp java_java-jsp springmvc-controller 传值到页面的方法
  11. [Python+Django]Web图书管理系统毕业设计之源码+论文篇
  12. aaa logo汉子字体_AAA Logo –标志设计软件
  13. NetXray嗅探器介绍
  14. YOLO算法是干嘛的?
  15. 误删了win10下面的winsock和winsock2
  16. STM32 HAL库之看门狗
  17. 基于Matlab的BiLSTM实现
  18. 汽车滤纸-市场现状及未来发展趋势
  19. 量化初级 -- akshare获得股票代码,最简策略
  20. oracle 查找非中文,Oracle中如何判断一个字符串是否含有汉字

热门文章

  1. 虚函数表存储的位置(解析C++内存分配及其编译分段)
  2. pwm控制直流电机转速流程图_一例PWM直流电机转速控制器的电路图,附电路原理分析...
  3. 微信小程序 百度SDK定位 坐标纠偏
  4. C语言:将两个按值有序排列的非空线性链表合并为一个按值有序的线性链表算法
  5. Java垃圾回收的时间点
  6. 我的世界android官方版下载,我的世界0.14.2下载
  7. mindoc源码编译和部署
  8. java maven 配置环境变量_maven 环境变量的配置详解
  9. Python入门学习十:Python绘图
  10. Linux为sh脚本文件添加执行权限