Quartz简介及使用

声明:此博客以英雄联盟为例

Quartz简介

Quartz 是一款优秀的Java调度器,就是能够实现杂家的定时任务

(理解概念的请直奔下一内容,这里举例,比如定时发送邮件,我要明天发,或者2小时后再发,我们可以通过Quartz框架设置一个定时任务,来实现,当然,定时任务绝不只此一种,勿喷!)

 

Quartz中使用的几个类

  1. Task:自己写的任务类对象,就是杂家要用什么干。(强行解释:LOL小兵就是杂家的Task类)

  2. Job:具体干Task类中的哪些事儿(方法或其他执行的代码),使用Job的execute()方法实现。(强行解释:LOL小兵,从血池一直向前走,一直向前走)
  3. JobDetail:这个类要把Task和Job给包含进去,具体就是把杂家要干的Task,放在JobDetail的JobDateMap数组中,把杂家要干的Job,使用JobDetail封装起来。(强行解释:同一时刻,我要出现6个小兵Task,这个不知道的就只能再玩儿两把LOL了)
  4. Trigger:触发器,这个玩意儿来设置,什么时候干(强行解释:每隔几十秒,一波小兵,还有红蓝没了,多少秒刷新)
  5. Scheduler:这个就是杂家的调度器啦,将触发器和JobDetail作为参数,开始实现工作(强行解释:LOL的大地图,所有的东西都是在这个上面跑的)

代码实现请参见:https://blog.csdn.net/zhangzheng_427/article/details/7221380

Quartz中的触发器

CronTrigger

使用场景:灵活,杂家独爱此器

用法:7个时间字段组成的时间格式

详情请参考:http://eksliang.iteye.com/blog/2208295

SimpleTrigger

使用场景:当且仅需触发一次或者以固定时间间隔周期触发执行。

用法:设置参数

详情请参考:http://eksliang.iteye.com/blog/2208166

DateIntervalTrigger

特点:不受misfired的影响

同SimpleTrigger

详情参考:http://eksliang.iteye.com/blog/2208559

misfired

例如:当Scheduler资源不足的时候,或者机器崩溃重启等,有可能某一些Trigger在应该触发的时间点没有被触发,也就是Miss Fire了。这个时候Trigger需要一个策略来处理这种情况。每种Trigger可选的策略各不相同。

错失策略可参见:https://www.cnblogs.com/drift-ice/p/3817269.html

在上面连接中直接Ctrl+F搜索:错失策略关键字

错失策略感觉比较高级,还没有详看。

其他Trigger

请参见:https://www.cnblogs.com/drift-ice/p/3817269.html

Calendar

触发器结合使用类,可以设置,节假日不执行等神奇的功能

详情:http://eksliang.iteye.com/blog/2208333

Quartz中的监听器

功能:同所有监听器一样

对应 Job,Trigger,Schiduler三个监听器,可以添加杂家想监听的内容。

参见:http://eksliang.iteye.com/blog/2208624

Quartz的任务持久存储

当杂家的任务执行,突然,一道闪电劈过来,断电了,一般的任务肯定是死了,那么重启后,一般是从头再来,但是任务持久存储就不一样了。

Quartz的任务持久存储可以实现,任务中断时,重启应用仍能继续我的任务执行,这些信息存储在数据库或者内存中。

数据库实现注意点:不同的数据库,对应的不同的表结构,这个杂家也不自导为啥。

关于Spring+MySQL的实现请参见:https://blog.csdn.net/qq_30097433/article/details/61201540

 

 

 

 

 

 

 

 

 

 

 

 

 

展开阅读全文

没有更多推荐了,返回首页