初识Quartz之第一个Quartz实例
转:
初识Quartz之第一个Quartz实例
根据前面的博文对Quartz的三大组件:Job、Trigger、Scheduler分别进行了介绍,本文则利用创建三大组件创建一个Quartz的实例,来了解Quartz框架的工作流程。
1.创建项目
首先利用eclipse建立一个Maven项目,选择图中所示的Filter选项。并继续完成命名等,创建一个项目。
2.pom文件
根据Quartz框架所需要的jar包,将其写到pom文件中,便于统一生成,pom配置文件如下所示:
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.carson</groupId>
- <artifactId>FirstQuarz</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>FirstQuarz</name>
- <url>http://maven.apache.org</url>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.quartz-scheduler</groupId>
- <artifactId>quartz</artifactId>
- <version>2.2.3</version>
- </dependency>
- </dependencies>
- </project>
3.Job实现类
三大组件之一就是Job组件,其中需要实现Job接口,而Job接口中只有一个execute()方法,需要实现execute()方法,具体如下所示:
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import org.quartz.Job;
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
- public class MyJob implements Job {
- public void execute(JobExecutionContext context) throws JobExecutionException {
- //打印当前的执行时间,格式为yyyy-MM-dd HH:mm:ss
- // 编写具体的业务逻辑。
- Date date=new Date();
- SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//规范格式
- System.out.println("当前时间为:"+sf.format(date));
- System.out.println("Hello World!");
- }
- }
4.Scheduler类
该类用于作任务调度的,首先将Job实现类绑定到JobDetail对象中,然后创建Trigger对象,最后创建Scheduler对象并将JobDetail对象和Trigger对象绑定到Scheduler对象中。通过以上步骤,实现调度器对Job任务的调度,并通过触发器来设置任务触发始末以及频率。
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import org.quartz.JobBuilder;
- import org.quartz.JobDetail;
- import org.quartz.Scheduler;
- import org.quartz.SchedulerException;
- import org.quartz.SchedulerFactory;
- import org.quartz.SimpleScheduleBuilder;
- import org.quartz.Trigger;
- import org.quartz.TriggerBuilder;
- import org.quartz.impl.StdSchedulerFactory;
- public class MyScheduler {
- public static void main(String[] args) throws SchedulerException
- {
- //创建一个JobDetail实例,将该实例与MyJob Class绑定。
- JobDetail jobDetail=JobBuilder.newJob(MyJob.class).withIdentity("myJob", "group1").build();
- //创建一个Trigger实例,定义该Job立即执行,并且每隔两秒钟重复一次,
- Trigger trigger=TriggerBuilder
- .newTrigger()
- .withIdentity("myTrigger","group1")
- .startNow()
- .withSchedule(SimpleScheduleBuilder
- .simpleSchedule()
- .withIntervalInSeconds(5)
- .repeatForever())
- .build();
- SchedulerFactory sf=new StdSchedulerFactory();
- Scheduler scheduler=sf.getScheduler();
- scheduler.start();
- Date date=new Date();
- SimpleDateFormat sfd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//规范格式
- //System.out.println("当前时间为:"+sfd.format(date));
- scheduler.scheduleJob(jobDetail, trigger);
- }
- }
最后运行程序,得到如下结果:
- SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
- SLF4J: Defaulting to no-operation (NOP) logger implementation
- SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
- 当前时间为:2018-04-09 17:04:55
- Hello World!
- 当前时间为:2018-04-09 17:04:59
- Hello World!
- 当前时间为:2018-04-09 17:05:04
- Hello World!
- 当前时间为:2018-04-09 17:05:09
- Hello World!
- 当前时间为:2018-04-09 17:05:14
- Hello World!
- 当前时间为:2018-04-09 17:05:19
- Hello World!
- 当前时间为:2018-04-09 17:05:24
- Hello World!
- 当前时间为:2018-04-09 17:05:29
- Hello World!
- 当前时间为:2018-04-09 17:05:34
- Hello World!
- 当前时间为:2018-04-09 17:05:39
- Hello World!
- 当前时间为:2018-04-09 17:05:44
- Hello World!
- 当前时间为:2018-04-09 17:05:49
- Hello World!
- 。。。。。。
由于设置的是一直调度不停歇,所以会一直按着间隔时间段触发任务。
初识Quartz之第一个Quartz实例的更多相关文章
- 快速搭建一个Quartz定时任务【转载,好文 ,值得收藏,亲身试用 效果不错】
Quartz.NET 入门 概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔 ...
- 第一个Quartz程序 (二)
1 我们使用maven项目 2 创建一个job类,在execute()方法里写上业务逻辑代码. 3 在另外一个类中创建触发器,调度器,并且绑定job. 首先在项目的pom.xml引入需要的jar包. ...
- 企业级任务调度框架Quartz(4) 多个job实例注册到任务调度器上
前序: 在第一个例子我看到了自定义的作业类在任务调度器上注册后,则通过任务调度器来实现启动:下面,我们将同一个作业类执行两个任务,并都将他们注册到任务调度器上! 首先一个job类指向两 ...
- 你的第一个Quartz程序
package org.quartz.examples.example1; import java.util.Date; import org.slf4j.Logger; import org.slf ...
- 我的第一个Quartz代码
创建Maven项目 打开Eclipse->File->Project->Maven ->Maven Project直接下一步输入Group Id和Artifact Id , ...
- SpringBoot定时任务 - 集成quartz实现定时任务(单实例和分布式两种方式)
最为常用定时任务框架是Quartz,并且Spring也集成了Quartz的框架,Quartz不仅支持单实例方式还支持分布式方式.本文主要介绍Quartz,基础的Quartz的集成案例本,以及实现基于数 ...
- 做了一个quartz用到的cron在线生成器
做了一个quartz用到的cron在线生成器 做了一个quartz用到的cron在线生成器 做这个的目的是前期在做Quartz时老是不知道如何去写,我想也有很多人和我一样吧. 有一次使用了一个老外 ...
- 如何创建一个Quartz.NET的工作,需要注射autofac
问题: 使用 Quartz.Net 做定时任务时,实现IJob对象的服务,Autofac不会自动注入,使用构造函数会直接出现异常,无法执行Execute方法. 解决方式 方法一: 使用 Autofac ...
- quartz2.3.0(一)您的第一个Quartz程序
任务类 package org.quartz.examples.example1; import java.util.Date; import org.slf4j.Logger; import org ...
随机推荐
- Tomcat通过Memcached实现session共享的完整部署记录
对于web应用集群的技术实现而言,最大的难点就是:如何能在集群中的多个节点之间保持数据的一致性,会话(Session)信息是这些数据中最重要的一块.要实现这一点, 大体上有两种方式:一种是把所有Ses ...
- 个人作业Week1
一.<构建之法>提问 1.需求是什么?需求的规范需要明确吗? 2.一个人开发效率非常高,多人开发,个人效率随团队人数上升而直线下降,我们一般需要将大项目拆为小项目,使协作耦合产生的效率负影 ...
- 【Beta阶段】第九次Scrum Meeting!(论坛已成功上线)
每日任务内容: 本次会议为第九次Scrum Meeting会议~ 本次会议为团队项目第九次会议,在会议前大家取得了重大成果! 队员 昨日完成任务 明日要完成任务 刘乾 #179 完成1021的数据处理 ...
- linux内核期中总结
20135132陈雨鑫 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ...
- C程序设计实践教学提示
实践教学要点:实验重心应放在实验室之外,重在实验准备 对实验题目的分析是一个复杂的工作,很发时间的,如全部放在实验上机时来完成,是不现实的.(特别是后面实验的难度增大,或实验代码增多的情况下),而且, ...
- 第三个sprint冲刺第三阶段
公测版:
- HDU 2053 Switch Game
http://acm.hdu.edu.cn/showproblem.php?pid=2053 Problem Description There are many lamps in a line. A ...
- 快速简化Android截屏工作
1.安装Notepad++v6.9 2.插件管理器里Plugin Manager安装AndroidLogger 3.AndroidLogger里的capture功能抓取Android的当前屏幕截图到w ...
- ASP.NET MVC用户登录(Memcache存储用户登录信息)
一.多站点共享用户信息解决方案: 采用分布式缓存Memcache模拟Session进行用户信息信息共享 1.视图部分
- Javascript中实现继承的方式
js中实现继承和传统的面向对象语言中有所不同:传统的面向对象语言的继承由类来实现,而在js中,是通过构造原型来实现的,原型与如下几个术语有关: ①构造函数:在构造函数内部拥有一个prototype属性 ...