Quartz
2016-12-07 00:00
344 查看
今天突然想使用一下Quartz,就顺便记录一下下次用的时候就不用再找了。
什么是Quartz
Quartz是一个开源的作业调度框架,由java编写,在.NET平台为Quartz.Net,通过Quart可以快速完成任务调度的工作.
Quartz能干什么/应用场景
如网页游戏中挂机自动修炼如8个小时,人物相关数值进行成长,当使用某道具后,时间减少到4个小时,人物对应获得成长值.这其中就涉及到了Scheduler的操作,定时对人物进行更新属性操作,更改定时任务执行时间.
网页游戏中会大量涉及到Scheduler的操作,有兴趣的朋友可自行联想.比如:企业中如每天凌晨2点触发数据同步、发送Email等操作。
同类框架对比
TimeTask TimeTask在Quartz前还是显得过于简单、不完善,不能直接满足开发者的较为复杂的应用场景.
Maven资源
组件介绍:
测试代码:
什么是Quartz
Quartz是一个开源的作业调度框架,由java编写,在.NET平台为Quartz.Net,通过Quart可以快速完成任务调度的工作.
Quartz能干什么/应用场景
如网页游戏中挂机自动修炼如8个小时,人物相关数值进行成长,当使用某道具后,时间减少到4个小时,人物对应获得成长值.这其中就涉及到了Scheduler的操作,定时对人物进行更新属性操作,更改定时任务执行时间.
网页游戏中会大量涉及到Scheduler的操作,有兴趣的朋友可自行联想.比如:企业中如每天凌晨2点触发数据同步、发送Email等操作。
同类框架对比
TimeTask TimeTask在Quartz前还是显得过于简单、不完善,不能直接满足开发者的较为复杂的应用场景.
Maven资源
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency>
组件介绍:
JobDetail:任务的描述类 通过JobBuilder.newJob(PunchCardJob.class).withIdentity(jobKey).build(); Trigger:触发器 TriggerBuilder.newTrigger().withIdentity("dummyTriggerName", "group1") .withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) .build(); Scheduler:创建调度器 new StdSchedulerFactory().getScheduler();
测试代码:
package quartz; import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; import org.quartz.impl.matchers.KeyMatcher; /** * Created by sun on 2016/12/6. */ public class QuartzTest { public static void main(String[] args) { //创建一个JobDetail对象 同时设置任务名称和任务组名 JobKey jobKey = new JobKey("dummyJobName", "group1"); JobDetail job = JobBuilder.newJob(PunchCardJob.class).withIdentity(jobKey).build(); //触发器 设置触发器的名称和组名称 设置触发器的cron规则 Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("dummyTriggerName", "group1") //cron表达式 每五秒钟执行一次 .withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) .build(); //创建调度器 通过标准调度工厂配置调度器 Scheduler scheduler = null; try { scheduler = new StdSchedulerFactory().getScheduler(); scheduler.getListenerManager() .addJobListener(new MyJobListener(), KeyMatcher.keyEquals(jobKey)); //启动调度器 scheduler.start(); //设置调度器的job详情和触发器 scheduler.scheduleJob(job, trigger); } catch (SchedulerException e) { e.printStackTrace(); } } }
package quartz; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import java.util.Date; /** * Created by sun on 2016/12/6. */ public class PunchCardJob implements Job { public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { System.out.println("======"+new Date()); throw new JobExecutionException("Testing Exception"); } }
package quartz; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.JobListener; /** * Created by sun on 2016/12/7. */ public class MyJobListener implements JobListener { public static final String LISTENER_NAME = "dummyJobListenerName"; public String getName() { return LISTENER_NAME; } public void jobToBeExecuted(JobExecutionContext jobExecutionContext) { System.out.println("定时任务执行之前。。。。"); } public void jobExecutionVetoed(JobExecutionContext jobExecutionContext) { System.out.println("异常的时候执行"); } public void jobWasExecuted(JobExecutionContext jobExecutionContext, JobExecutionException e){ System.out.println("定时任务执行之后执行。。。。。。"); } }
相关文章推荐
- 探讨一下Quartz.NET的源代码
- 关情纸尾-----Quartz2D-定时器CADisplayLink下雪效果
- springboot quartz 多任务整合
- 任务调度开源框架Quartz
- Quartz实现定时任务的配置方法
- Spring整合Quartz 2.2实现作业动态调度
- spring quartz 文件配置
- quartz定时任务
- Quartz定时任务
- Spring结合Quartz实现多任务定时调用
- Quartz2D-平移,旋转,缩放
- 导入了quartz.jar包没有QuartzJobBean,无法继承
- Quartz 在Spring中动态设置cronExpression
- Quartz2D之绘制一个简单的机器猫
- Quartz.NET开源作业调度框架系列(一):快速入门step by step-转
- Spring框架对QUARTZ任务调度组件的扩展支持实践小结
- Quartz2D绘图<三>绘制图形
- .NETCore 知识点记录-QuartzCore 定时任务
- spring - quartz 需要增加的几个jar
- iOS-Quartz 2D