quartz

(翻译)Quartz官方教程——第七课:TriggerListeners 和 JobListeners

∥☆過路亽.° 提交于 2019-11-30 12:12:15
监听器是用来根据调度器发生的事件做出响应的对象。正如你想的那样, TriggerListeners 接收触发器相关的事件, JobListeners 接收任务相关的事件。 触发器相关的事件包括:任务触发,任务错过触发(在教程的触发器章节讨论过)以及触发完毕(及由触发器触发的任务执行完毕)。 TriggerListener接口代码 public interface TriggerListener { public String getName(); public void triggerFired(Trigger trigger, JobExecutionContext context); public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context); public void triggerMisfired(Trigger trigger); public void triggerComplete(Trigger trigger, JobExecutionContext context, int triggerInstructionCode); } 任务相关的事件包括:任务将要被执行的通知和任务执行完毕的通知 JobListener接口代码 public interface

Quartz教程一--使用Quartz

早过忘川 提交于 2019-11-30 12:12:01
Scheduler在使用之前需要实例化。一般通过SchedulerFactory来创建一个实例。有些用户将factory的实例保存在JNDI中,但直接初始化,然后使用该实例也许更简单(见下面的示例)。 scheduler实例化后,可以启动(start)、暂停(stand-by)、停止(shutdown)。注意:scheduler被停止后,除非重新实例化,否则不能重新启动;只有当scheduler启动后,即使处于暂停状态也不行,trigger才会被触发(job才会被执行)。 下面的代码片段,实例化并启动一个scheduler,调度执行一个job: SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(); Scheduler sched = schedFact.getScheduler(); sched.start(); // define the job and tie it to our HelloJob class JobDetail job = newJob(HelloJob.class) .withIdentity("myJob", "group1") .build(); // Trigger the job to run now, and then every 40 seconds

SpringBoot 集成Quartz

£可爱£侵袭症+ 提交于 2019-11-30 06:24:55
在项目开发中,经常需要定时任务来帮助我们来做一些内容,比如定时派息、跑批对账、业务监控等。Spring Boot 体系中现在有两种方案可以选择,第一种是 Spring Boot 内置的方式简单注解就可以使用,当然如果需要更复杂的应用场景还是得 Quartz 上场,Quartz 目前是 Java 体系中最完善的定时方案。 一、Spring Boot内置定时任务 1. pom 包配置 pom 包里面只需要引入 Spring Boot Starter 包即可,Spring Boot Starter 包中已经内置了定时的方法。 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> </dependencies> 2. 启动类开启定时 在启动类上面加上 @EnableScheduling 即可开启定时: @Spring BootApplication @EnableScheduling public class Application { public static void main(String[] args) { SpringApplication.run(Application

java quartz 中的时间格式

自作多情 提交于 2019-11-30 04:49:48
上一文中提到 Cron触发器可以接受一个表达式来指定执行JOB,下面看看这个表达式的语法。 cron 表达式的格式 Quartz cron 表达式的格式十分类似于 UNIX cron 格式,但还是有少许明显的区别。区别之一就是 Quartz 的格式向下支持到秒级别的计划,而 UNIX cron 计划仅支持至分钟级。许多我们的触发计划要基于秒级递增的(例如,每45秒),因此这是一个非常好的差异。 在 UNIX cron 里,要执行的作业(或者说命令)是存放在 cron 表达式中的,在第六个域位置上。Quartz 用 cron 表达式存放执行计划。引用了 cron 表达式的 CronTrigger 在计划的时间里会与 job 关联上。 另一个与 UNIX cron 表达式的不同点是在表达式中支持域的数目。UNIX 给出五个域(分、时、日、月和周),Quartz 提供七个域。表 5.1 列出了 Quartz cron 表达式支持的七个域。 表 5.1. Quartz Cron 表达式支持到七个域 名称 是否必须 允许值 特殊字符 秒 是 0-59 , - * / 分 是 0-59 , - * / 时 是 0-23 , - * / 日 是 1-31 , - * ? / L W C 月 是 1-12 或 JAN-DEC , - * / 周 是 1-7 或 SUN-SAT , - * ? /

SpringBoot定时任务(schedule、quartz)

有些话、适合烂在心里 提交于 2019-11-30 03:42:43
Scheduled   只适合处理简单的计划任务,不能处理分布式计划任务。优势:是spring框架提供的计划任务,开发简单,执行效率比较高。且在计划任务数量太多的时候,可能出现阻塞,崩溃,延迟启动等问题。   Scheduled定时任务是spring3.0版本之后自带的一个定时任务。其所属Spring的资源包为:spring-context-support。所以需要使用Scheduled定时任务机制时,需要在工程中依赖对应资源,具体如下: <!-- scheduled所属资源为spring-context-support --> <dependency>   <groupId>org.springframework</groupId>   <artifactId>spring-context-support</artifactId> </dependency>   如果在spring应用中需要启用Scheduled定时任务,则需要在启动类上增加注解@EnableScheduling,代表启用Scheduled定时任务机制。具体如下: @SpringBootApplication @EnableScheduling public class AppStarter {   public static void main(String[] args) {    

Spring-QUARTZ定时任务demo

两盒软妹~` 提交于 2019-11-30 03:04:53
Quartz定时任务demo下载:https://github.com/AliceSunCong/quartz大致流程:**1.pom文件引入QUARTZ依赖**<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId></dependency>**2.实现定时任务框架本身的增删改查(使定时任务可以运行起来)**_pojo:_jobinfo--定时任务具体信息(任务名/任务组/cron表达式/任务类型/时间类型)QuartzJonInfo--Quartz框架需要的信息_mapper:_JobAndTriggerMapper--查询获取数据库的定时任务表数据信息_service:_JobService & JobServiceImpl--添加/删除/查看/分页定时任务信息(具体Quartz增删改查的业务)_conrtroller:_JobController--页面配置定时任务接口,实现定时任务可视化配置**3.添加自己的业务定时任务**SelfJobService & SelfJobServiceImpl--初始化定时任务,添加Job信息到QuartzTestJob--测试定时任务(具体业务类)继承QuartzJobBean

quartz (从原理到应用)详解篇

梦想的初衷 提交于 2019-11-30 01:11:29
目录: 一、Quartz 基本介绍 1.1 Quartz 概述 1.2 Quartz特点 1.3 Quartz 集群配置 二、Quartz 原理及流程 2.1 quartz基本原理 2.2 quartz启动流程 三、Spring + Quartz 实现企业级调度的实现示例 3.1 环境信息 3.2 相关代码及配置 四、问题及解决方案 五、相关知识 六、参考资料 总结 一、Quartz 基本介绍 1.1 Quartz 概述 Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现。该项目于 2009 年被 Terracotta 收购,目前是 Terracotta 旗下的一个项目。读者可以到 http://www.quartz-scheduler.org/ 站点下载 Quartz 的发布版本及其源代码。 1.2 Quartz特点 作为一个优秀的开源调度框架,Quartz 具有以下特点: 强大的调度功能,例如支持丰富多样的调度方法,可以满足各种常规及特殊需求; 灵活的应用方式,例如支持任务和调度的多种组合方式,支持调度数据的多种存储方式; 分布式和集群能力,Terracotta 收购后在原来功能基础上作了进一步提升。 另外,作为 Spring 默认的调度框架,Quartz 很容易与 Spring 集成实现灵活可配置的调度功能。

Quartz任务监控管理 (1)

只愿长相守 提交于 2019-11-29 23:35:28
Quartz任务监控管理,类似Windows任务管理器,可以获得运行时的实时监控,查看任务运行状态,动态增加任务,暂停、恢复、移除任务等。对于动态增加任务,可以参加我的前一篇文章《Quartz如何在Spring动态配置时间》,本文在前文的基础上扩展,增加暂停、恢复、移除任务等功能,实现Quartz任务监控管理。 先看一下最终实现实现效果,只有两个页面 ,如下 在这个页面查看任务实时运行状态,可以暂停、恢复、移除任务等 在这个页面可以动态配置调度任务。 实现任务监控,必须能将数据持久化,这里采用数据库方式,Quartz对任务的数据库持久化有着非常好的支持。我在这里采用quartz 1.6.5,在Quartz发行包的docs\dbTables目录包含有各种数据库对应脚本,我用的是MySql 5.0,所以选用tables_mysql_innodb.sql建表。 建表完成后,配置数据库连接池,分两步: 1、配置jdbc.properties文件 Java代码 jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql: //localhost:3306/quartz?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true jdbc.username=root

Spring Boot中使用Quartz, 在Job中无法注入其他Bean

孤人 提交于 2019-11-29 23:35:13
使用Quartz来定期发送告警任务,告警Job如: public class AlarmJob implements Job { @Resource private StoreRepository storeRepository; @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { // 告警逻辑 } } StoreRepository是Spring Boot中的bean,该Job被触发后,始终得不到该bean的实例,参考了 https://blog.csdn.net/xiaobuding007/article/details/80455187 配置一个JobFactory @Component public class JobFactory extends AdaptableJobFactory { /** * AutowireCapableBeanFactory接口是BeanFactory的子类 * 可以连接和填充那些生命周期不被Spring管理的已存在的bean实例 */ private AutowireCapableBeanFactory factory; public JobFactory

Spring与Quartz实现定期任务

左心房为你撑大大i 提交于 2019-11-29 23:35:00
日志说明: 1、不对Spring的基础环境配置做详细说明; 2、只是记录一下暂时自己从网上及参考手册上查找到的经测试有用的资料 3、记录一下,方便以后自己或需要的朋友使用,后续有新的有用资料会及时更新 4、可查看Spring4.0参考手册:Part Ⅵ.Integration的27.6Using the Quartz Scheduler 5、测试时用的却是Spring3.1.3 注意: 引用Quartz时最好使用1.8.5 (目前最新的是2.2.1,此版本与Spring3.1.1暂不兼容,实测时启动项目会报错,具体什么错误给忘了) <!-- 任务调度测试实现一 : 自定义的任务对象com.bocloud.equipment.test.ExampleJob 必须继承QuartzJobBean类,实现抽象方法executeInternal 每次执行任务时,都会新创建一个任务对象. --> <bean id="myJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean"> <!-- 属性jobClass不能通过ref来指定为exampleJob对象,该属性接收的是Class类型的参数 进行任务调度时,每次都是一个新的jobClass对象去执行executeInternal方法 --> <property