quartz

Quartz CronTrigger最完整配置说明(转自http://www.blogjava.net/xmatthew/archive/2009/02/15/253864.html)...

谁说我不能喝 提交于 2019-11-26 21:16:41
Quartz CronTrigger最完整配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 1 秒 是 0-59 , - * / 2 分 是 0-59 , - * / 3 小时 是 0-23 , - * / 4 日 是 1-31 , - * ? / L W 5 月 是 1-12 or JAN-DEC , - * / 6 周 是 1-7 or SUN-SAT , - * ? / L # 7 年 否 empty 或 1970-2099 , - * / 通配符说明: * 表示所有值. 例如:在分的字段上设置 "*",表示每一分钟都会触发。 ? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。例如:要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为"?" 具体设置为 0 0 0 10 * ? - 表示区间。例如 在小时上设置 "10-12",表示 10,11,12点都会触发。 , 表示指定多个值,例如在周字段上设置 "MON,WED,FRI" 表示周一,周三和周五触发 / 用于递增触发。如在秒上面设置"5/15" 表示从5秒开始,每增15秒触发(5,20,35,50)。 在月字段上设置'1/3'所示每月1号开始,每隔三天触发一次。 L

spring-boot-starter-quartz集群实践

非 Y 不嫁゛ 提交于 2019-11-26 21:07:30
【**前情提要**】由于项目需要,需要一个定时任务集群,故此有了这个spring-boot-starter-quartz集群的实践。springboot的版本为:2.1.6.RELEASE;quartz的版本为:2.3.1.假如这里一共有两个定时任务的节点,它们的代码完全一样。 --- # 壹.jar包依赖 ~~~pom 1.8 org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-quartz mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-jdbc org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test ~~~ 这里选择将定时任务的数据入库,避免数据直接存在内存中,因应用重启造成的数据丢失和做集群控制。 # 贰、项目配置 ~~~yaml spring: server: port: 8080 servlet: context-path: /lovin datasource: url: jdbc:mysql://127.0.0.1

【Java】Quartz的简单使用

前提是你 提交于 2019-11-26 20:44:10
maven依赖: <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.1</version> </dependency> 首先需要配置文件(quartz.properties): org.quartz.scheduler.instanceName = QuartzTest org.quartz.threadPool.threadCount = 10 org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore 需要有一个类实现Job接口,并实现其中的execute方法,简单的写一点: package com.hj.quartz.impl; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import java.text.SimpleDateFormat; import java.util

org.quartz-scheduler 基础过程

六眼飞鱼酱① 提交于 2019-11-26 20:13:22
特征 Quartz将定时任务分为任务 JobDetail 和 触发器 Trigger ;同一个JobDetail可以有多个Trigger;默认的RAMJobStore中通过TreeSet<TriggerWrapper>来管理多个Trigger Quartz有一个专门的调度线程 quartzSchedulerThread 对任务进行管理,任务执行有另外专门的线程池( 默认是 SimpleThreadPool ); Quartz能够通过序列化,将定时任务保存在数据库 JobStore, 默认 RAMJobStore,存储在随机内存中 (mysql/mongodb) ; 流程 初始化调度器 任务执行 核心: QuartzSchedulerThread.run()中循环执行。每一次任务的执行过程都会创建实例JobRunShell。 调度线程首先去线程池中获取可用的线程,如果没有的话,就阻塞; 从JobStore(从存储介质中获取触发器,存储介质可以是内存也可以是数据库)获取(接下来30s内的,但只有在2ms内时才会真正执行)触发器,然后等待该触发器触发; 调度线程每次创建一个JobRunShell(就是一个Runnable),然后从线程池中调用线程执行该任务;获取trigger、JobDetail以及生成Job实例,然后执行job的execute接口函数。 一次完成的过程 private

Spring Boot实践--定时任务两种(Schedule与Quartz整合)

前提是你 提交于 2019-11-26 16:04:47
Spring Boot实践--定时任务两种(Schedule与Quartz整合) 最近在项目中使用到定时任务,之前一直都是使用Quartz 来实现,最近看Spring 基础发现其实Spring 提供 Spring Schedule 可以帮助我们实现简单的定时任务功能。 下面说一下两种方式在Spring Boot 项目中的使用。 Spring Schedule 实现定时任务 Spring Schedule 实现定时任务有两种方式 1. 使用XML配置定时任务, 2. 使用 @Scheduled 注解。 因为是Spring Boot 项目 可能尽量避免使用XML配置的形式,主要说注解的形式. Spring Schedule 提供三种形式的定时任务: 固定等待时间 @Scheduled(fixedDelay = 时间间隔 ) @Component public class ScheduleJobs { public final static long SECOND = 1 * 1000; FastDateFormat fdf = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss"); @Scheduled(fixedDelay = SECOND * 2) public void fixedDelayJob() throws

Quartz 与 Spring 集成使用的实例

别等时光非礼了梦想. 提交于 2019-11-26 15:40:58
们通过Spring 的IOC来与Quartz集成使用,对于定时任务,我们可以让这个应用做为jar 小工具在linux下跑,也可以将应用单独放在一个容器里跑。这个视情况而定 一下是一个简单的应用,quartz + Spring 集成使用的核心就这Spring的配置文件 1 <? xml version="1.0" encoding="UTF-8" ?> 2 < beans xmlns ="http://www.springframework.org/schema/beans" 3 xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context ="http://www.springframework.org/schema/context" 5 xmlns:aop ="http://www.springframework.org/schema/aop" 6 xmlns:tx ="http://www.springframework.org/schema/tx" 7 xsi:schemaLocation ="http://www.springframework.org/schema/beans 8 http://www.springframework.org/schema/beans/spring-beans

Quartz cron 表达式格式

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-26 15:40:50
Quartz cron 表达式的格式十分类似于 UNIX cron 格式,但还是有少许明显的区别。区别之一就是 Quartz 的格式向下支持到秒级别的计划,而 UNIX cron 计划仅支持至分钟级。许多我们的触发计划要基于秒级递增的(例如,每45秒),因此这是一个非常好的差异。 在 UNIX cron 里,要执行的作业(或者说命令)是存放在 cron 表达式中的,在第六个域位置上。Quartz 用 cron 表达式存放执行计划。引用了 cron 表达式的 CronTrigger 在计划的时间里会与 job 关联上。 另一个与 UNIX cron 表达式的不同点是在表达式中支持域的数目。UNIX 给出五个域( 分、时、日、月和周 ),Quartz 提供七个域。表 5.1 列出了 Quartz cron 表达式支持的七个域。 名称 是否必须 允许值 特殊字符 秒 是 0-59 , - * / 分 是 0-59 , - * / 时 是 0-23 , - * / 日 是 1-31 , - * ? / L W C 月 是 1-12 或 JAN-DEC , - * / 周 是 1-7 或 SUN-SAT , - * ? / L C # 年 否 空 或 1970-2099 , - * / 月份和星期的名称是不区分大小写的。 FRI 和 fri 是一样的。 域之间有空格分隔,这和 UNIX

Quartz的特点

做~自己de王妃 提交于 2019-11-26 13:17:43
运行环境 Quartz可以运行嵌入在另一个独立式应用程序 Quartz可以在应用程序服务器(或servlet容器)内被实例化,并且参与 XA事务 Quartz可以作为一个独立的程序运行,可以用个 RMI 使用 Quartz可以被实例化,走位独立的项目集群(负载平衡和故障转移功能),用于作业的执行 作业调度 作业被安排在一个给定的触发时运行,触发器可以使用一下指令来创建(以下指令均可以组合) 在一天中的某个时间(到毫秒) 在一周的某几天 在每月的某一天 在一年中的某些日期 不在注册的日历中列出的特定日期(如商业节假日除外) 重复特定次数 重复进行,直到一个特定的时间/日期 无限重复 重复的延迟时间间隔 作业是由其创建者赋予的名字,也可以组织成命名组。触发器也可以给予名称和放置在组中,以方便地将它们调度内组织。作业可以被添加到所述调度器一次,而是具有多个触发器注册。在企业Java环境中,作业可以执行自己的工作作为分布式(XA)事务的一部分。 作业执行 作业可以实现简单的作业接口,为作业执行工作的任何Java类 job类的实例可以通过Quartz被实例化,或者通过应用程序框架 当触发时,调度通知实现JobListener和TriggerListener接口的零个或者多个java对象(监听器可以是简单的Java对象,或EJB,JMS或发布者等)。这些监听器在作业已经执行之后通知。

.NET Quartz介绍

放肆的年华 提交于 2019-11-26 11:18:10
Quartz是什么 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。 Quartz是一个任务日程管理系统,一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。 Quartz用一个小Java库发布文件(.jar文件),这个库文件包含了所有Quartz核心功能。这些功能的主要接口(API)是Scheduler接口。它提供了简单的操作,例如:将任务纳入日程或者从日程中取消,开始/停止/暂停日程进度。 Quartz能干什么 场景 #1: 每天晚上定时处理数据,并将数据交换到其它数据库; 场景 #2: 定时根据一定赛选条件向用户发送短信; Quartz框架分析 核心接口 转载于:https://www.cnblogs.com/maoli/articles/3549355.html 来源: https://blog.csdn.net/weixin_30338497/article/details/98811201

java调度任务在项目中的应用

自古美人都是妖i 提交于 2019-11-26 00:20:44
前言 任务调度是指基于给定时间点,给定时间间隔或者给定执行次数自动执行任务。项目中有很独特的应用的场景,比如每天凌晨同步数据,定时操作业务等等。 Timer scheduler quartz 1 Timer java.util.Timer,可以实现一些简单的定时任务,使用 Timer 实现任务调度的核心类是 Timer 和 TimerTask。其中 Timer 负责设定 TimerTask 的起始与间隔执行时间。使用者只需要创建一个 TimerTask 的继承类,实现自己的 run 方法,然后将其丢给 Timer 去执行即可。 Timer 将接收到的任务丢到自己的 TaskList 中,TaskList 按照 Task 的最初执行时间进行排序。TimerThread 在创建 Timer 时会启动成为一个守护线程。这个线程会轮询所有任务,找到一个最近要执行的任务,然后休眠,当到达最近要执行任务的开始时间点,TimerThread 被唤醒并执行该任务。之后 TimerThread 更新最近一个要执行的任务,继续休眠如下。 Timer 的优点在于简单易用,但由于所有任务都是由同一个线程来调度,因此所有任务都是串行执行的,同一时间只能有一个任务在执行,前一个任务的延迟或异常都将会影响到之后的任务: public class TimerTest extends TimerTask {