二、Quartz基础概念及常用cron

基础概念及常用cron

基础概念

Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,EJB 作业预构 建,JavaMail 及其它,支持 cron-like 表达式等等

中文文档

官方文档

常用组件

Scheduler调度器是quartz的核心,quartz通过这个容器来实现触发器和任务的绑定以及执行,代表一个Quartz的独立运行容器。Trigger和JobDetail可以注册到Scheduler中,Scheduler可以将Trigger绑定到某一JobDetail上,这样当Trigger被触发时,对应的Job就会执行。一个Job可以对应多个Trigger,但一个Trigger只能对应一个Job。
Job是一个接口,有一个方法 void execute(JobExecutionContext context) ,可以通过实现该接口来定义需要执行的任务
JobKey表示job实例的标识,触发器被触发时,该指定的job实例会被执行
JobDetailQuartz每次执行Job时,都重新创建一个Job实例,会接收一个Job实现类,以便运行的时候通过newInstance()的反射调用机制去实例化Job。JobDetail是用来描述Job实现类以及相关静态信息,比如任务在scheduler中的组名等信息
Trigger描述触发Job执行的时间触发规则实现类SimpleTrigger和CronTrigger可以通过crom表达式定义出各种复杂的调度方案
Calendar是一些日历特定时间的集合。一个Trigger可以和多个 calendar关联,比如每周一早上10:00执行任务,法定假日不执行,则可以通过calendar进行定点排除
JobDataMap可以包含不限量的(序列化的)数据对象,在job实例执行的时候,可以使用其中的数据;jobDataMap是java Map接口的一个实现,额外增加了一些便于存取基本类型的数据的方法
JobBuilder用于声明一个任务实例,也可以定义关于该任务的详情比如任务名、组名等,这个1声明的实例将会作为一个实际执行的任务
TriggerBuilder触发器创建器,用于创建触发器trigger实例
JobListener对Job的监听组件
TriggerListener对Trgigger的监听组件
SchedulerListener对Scheduler的监听组件

在这里插入图片描述
在这里插入图片描述

misfire关键字

表示任务到了触发时间,但是任务却没有被触发

可能的原因

  1. 使用了@DisallowConcurrentExecution注解,而且任务的执行时间>任务间隔
  2. 线程池满了,没有资源执行任务
  3. 机器宕机或者人为停止,过段时间恢复运行

Cron表达式

基本规则

格式: [秒] [分] [时] [日] [月] [周] [年]
类型是否必填允许填写的值允许的通配符
Y0-59,-*/
Y0-59,-*/
Y0-23,-*/
Y1-31,-*/?LW
Y1-12 or JAN-DEC,-*/
Y1-7 or SUN-SAT,-*/?L#
N空 or 1970-2099,-*/

常用表达式

cron说明
0 0 12 * * ?每天12点触发
0 15 10 ? * *每天10点15分触发
0 15 10 * * ?每天10点15分触发
0 15 10 * * ? *每天10点15分触发
0 15 10 * * ? 20052005年每天10点15分触发
0 * 14 * * ?每天下午的2点到2点59分每分触发
0 0/5 14 * * ?每天下午的2点到2点59分(整点开始,每隔5分触发)
0 0/5 14,18 * * ?每天下午的2点到2点59分(整点开始,每隔5分触发) 每天下午的18点到18点59分(整点开始,每隔5分触发)
0 0-5 14 * * ?每天下午的2点到2点05分每分触发
0 10,44 14 ? 3 WED3月份每周三下午的2点10分和2点44分触发
0 15 10 ? * MON-FRI周一到周五每天上午的10点15分触发
0 15 10 15 * ?每月15号上午10点15分触发
0 15 10 L * ?每月最后一天的10点15分触发
0 15 10 ? * 6L每月最后一周的星期五的10点15分触发
0 15 10 ? * 6L 2002-2005从2002年到2005年每月最后一周的星期五的10点15分触发
0 15 10 ? * 6#3每月第三周星期五的10点15分触发
0 0 12 1/5 * ?每月的第一个中午12点开始每隔5天触发一次
0 11 11 11 11 ?每年的11月11号11点11分触发

cron表达式生成网站

  1. 在线Cron表达式生成器 (qqe2.com)
  2. 在线Cron表达式生成器 (pppet.net)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值