转:

初识Quartz之第一个Quartz实例

2018年04月09日 17:07:31 carson0408 阅读数:366
 
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/carson0408/article/details/79868908

根据前面的博文对Quartz的三大组件:Job、Trigger、Scheduler分别进行了介绍,本文则利用创建三大组件创建一个Quartz的实例,来了解Quartz框架的工作流程。

1.创建项目

首先利用eclipse建立一个Maven项目,选择图中所示的Filter选项。并继续完成命名等,创建一个项目。

        创建完成后,项目如图所示:

2.pom文件

根据Quartz框架所需要的jar包,将其写到pom文件中,便于统一生成,pom配置文件如下所示:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4.  
  5. <groupId>com.carson</groupId>
  6. <artifactId>FirstQuarz</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>jar</packaging>
  9.  
  10. <name>FirstQuarz</name>
  11. <url>http://maven.apache.org</url>
  12.  
  13. <properties>
  14. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  15. </properties>
  16.  
  17. <dependencies>
  18. <dependency>
  19. <groupId>junit</groupId>
  20. <artifactId>junit</artifactId>
  21. <version>3.8.1</version>
  22. <scope>test</scope>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.quartz-scheduler</groupId>
  26. <artifactId>quartz</artifactId>
  27. <version>2.2.3</version>
  28. </dependency>
  29. </dependencies>
  30. </project>

3.Job实现类

三大组件之一就是Job组件,其中需要实现Job接口,而Job接口中只有一个execute()方法,需要实现execute()方法,具体如下所示:

  1. import java.text.SimpleDateFormat;
  2. import java.util.Date;
  3.  
  4. import org.quartz.Job;
  5. import org.quartz.JobExecutionContext;
  6. import org.quartz.JobExecutionException;
  7.  
  8. public class MyJob implements Job {
  9.  
  10. public void execute(JobExecutionContext context) throws JobExecutionException {
  11. //打印当前的执行时间,格式为yyyy-MM-dd HH:mm:ss
  12. // 编写具体的业务逻辑。
  13. Date date=new Date();
  14. SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//规范格式
  15. System.out.println("当前时间为:"+sf.format(date));
  16. System.out.println("Hello World!");
  17. }
  18.  
  19. }

4.Scheduler类

该类用于作任务调度的,首先将Job实现类绑定到JobDetail对象中,然后创建Trigger对象,最后创建Scheduler对象并将JobDetail对象和Trigger对象绑定到Scheduler对象中。通过以上步骤,实现调度器对Job任务的调度,并通过触发器来设置任务触发始末以及频率。

  1. import java.text.SimpleDateFormat;
  2. import java.util.Date;
  3.  
  4. import org.quartz.JobBuilder;
  5. import org.quartz.JobDetail;
  6. import org.quartz.Scheduler;
  7. import org.quartz.SchedulerException;
  8. import org.quartz.SchedulerFactory;
  9. import org.quartz.SimpleScheduleBuilder;
  10. import org.quartz.Trigger;
  11. import org.quartz.TriggerBuilder;
  12. import org.quartz.impl.StdSchedulerFactory;
  13.  
  14. public class MyScheduler {
  15. public static void main(String[] args) throws SchedulerException
  16. {
  17. //创建一个JobDetail实例,将该实例与MyJob Class绑定。
  18. JobDetail jobDetail=JobBuilder.newJob(MyJob.class).withIdentity("myJob", "group1").build();
  19. //创建一个Trigger实例,定义该Job立即执行,并且每隔两秒钟重复一次,
  20. Trigger trigger=TriggerBuilder
  21. .newTrigger()
  22. .withIdentity("myTrigger","group1")
  23. .startNow()
  24. .withSchedule(SimpleScheduleBuilder
  25. .simpleSchedule()
  26. .withIntervalInSeconds(5)
  27. .repeatForever())
  28. .build();
  29. SchedulerFactory sf=new StdSchedulerFactory();
  30. Scheduler scheduler=sf.getScheduler();
  31. scheduler.start();
  32. Date date=new Date();
  33. SimpleDateFormat sfd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//规范格式
  34. //System.out.println("当前时间为:"+sfd.format(date));
  35. scheduler.scheduleJob(jobDetail, trigger);
  36. }
  37. }

最后运行程序,得到如下结果:

  1. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
  2. SLF4J: Defaulting to no-operation (NOP) logger implementation
  3. SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
  4. 当前时间为:2018-04-09 17:04:55
  5. Hello World!
  6. 当前时间为:2018-04-09 17:04:59
  7. Hello World!
  8. 当前时间为:2018-04-09 17:05:04
  9. Hello World!
  10. 当前时间为:2018-04-09 17:05:09
  11. Hello World!
  12. 当前时间为:2018-04-09 17:05:14
  13. Hello World!
  14. 当前时间为:2018-04-09 17:05:19
  15. Hello World!
  16. 当前时间为:2018-04-09 17:05:24
  17. Hello World!
  18. 当前时间为:2018-04-09 17:05:29
  19. Hello World!
  20. 当前时间为:2018-04-09 17:05:34
  21. Hello World!
  22. 当前时间为:2018-04-09 17:05:39
  23. Hello World!
  24. 当前时间为:2018-04-09 17:05:44
  25. Hello World!
  26. 当前时间为:2018-04-09 17:05:49
  27. Hello World!
  28. 。。。。。。

由于设置的是一直调度不停歇,所以会一直按着间隔时间段触发任务。

初识Quartz之第一个Quartz实例的更多相关文章

  1. 快速搭建一个Quartz定时任务【转载,好文 ,值得收藏,亲身试用 效果不错】

    Quartz.NET 入门 概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔 ...

  2. 第一个Quartz程序 (二)

    1 我们使用maven项目 2 创建一个job类,在execute()方法里写上业务逻辑代码. 3 在另外一个类中创建触发器,调度器,并且绑定job. 首先在项目的pom.xml引入需要的jar包. ...

  3. 企业级任务调度框架Quartz(4) 多个job实例注册到任务调度器上

    前序:     在第一个例子我看到了自定义的作业类在任务调度器上注册后,则通过任务调度器来实现启动:下面,我们将同一个作业类执行两个任务,并都将他们注册到任务调度器上!     首先一个job类指向两 ...

  4. 你的第一个Quartz程序

    package org.quartz.examples.example1; import java.util.Date; import org.slf4j.Logger; import org.slf ...

  5. 我的第一个Quartz代码

    创建Maven项目   打开Eclipse->File->Project->Maven ->Maven Project直接下一步输入Group Id和Artifact Id , ...

  6. SpringBoot定时任务 - 集成quartz实现定时任务(单实例和分布式两种方式)

    最为常用定时任务框架是Quartz,并且Spring也集成了Quartz的框架,Quartz不仅支持单实例方式还支持分布式方式.本文主要介绍Quartz,基础的Quartz的集成案例本,以及实现基于数 ...

  7. 做了一个quartz用到的cron在线生成器

    做了一个quartz用到的cron在线生成器 做了一个quartz用到的cron在线生成器   做这个的目的是前期在做Quartz时老是不知道如何去写,我想也有很多人和我一样吧. 有一次使用了一个老外 ...

  8. 如何创建一个Quartz.NET的工作,需要注射autofac

    问题: 使用 Quartz.Net 做定时任务时,实现IJob对象的服务,Autofac不会自动注入,使用构造函数会直接出现异常,无法执行Execute方法. 解决方式 方法一: 使用 Autofac ...

  9. quartz2.3.0(一)您的第一个Quartz程序

    任务类 package org.quartz.examples.example1; import java.util.Date; import org.slf4j.Logger; import org ...

随机推荐

  1. awk技巧(如取某一行数据中的倒数第N列等)

    使用awk取某一行数据中的倒数第N列:$(NF-(n-1))比如取/etc/passwd文件中的第2列.倒数第1.倒数第2.倒数第4列(以冒号为分隔符) [root@ipsan-node06 ~]# ...

  2. React++ node.js ++SQL Sever ++MySQL++ python ++ php ++ java ++ c++ c#++ java ++ android ++ ios ++Linux+

    "C语言在它诞生的那个年代,是非常不错的语言,可惜没有OOP.当项目臃肿到一定程度,人类就不可控了. 为了弥补这个缺陷,C++诞生了.而为了应对各种情况,C++设计的大而全,太多复杂的特性, ...

  3. 【Beta阶段】第六次Scrum Meeting!

    每日任务内容: 本次会议为第六次Scrum Meeting会议~ 由于本次会议项目经理召开时间为9:30,在公寓1楼会客室召开,召开时长约30分钟,探讨了本次取得的重大突破后需要继续开展的工作. 队员 ...

  4. C#改变图片大小

    今天一女同事要做一个改变图片大小的功能,然后我就手写了几行代码,以后可能用得上 byte[] buffer = new byte[1]; //Byte转为Image对象 MemoryStream ms ...

  5. nodejs框架对比

    最近想实操nodejs,在选择框架的时候,查阅后大致整理为如下表格内容. 此处列举下才开始使用eggjs框架: 1.其基于koa开发: 2.若为企业级项目,用其脚手架egg-inint搭建会快很多,后 ...

  6. .NET 使用 RabbitMQ 图文简介

    前言 最近项目要使用RabbitMQ,园里里面已经有很多优秀的文章,Rabbitmq官网也有.net实例.这里我尝试下图文并茂之形式记录下使用的过程. 安装 RabbitMQ是建立在erlang OT ...

  7. Online Resource Mapping for SDN Network Hypervisors using Machine Learning

    发表时间:2016 一些定义: self-configuring networks: FlowVisor: FlowVisor是建立在OpenFlow之上的网络虚拟化工具,它可以将物理网络划分成多个逻 ...

  8. css3 @media 实现响应式布局

    使用css3的@media,可以实现针对不同媒体.不同分辨率的响应式布局. 方法1:根据不同分辨率使用不同css文件 <link rel="stylesheet" media ...

  9. 面象对象设计原则之一:单一职责原则(Single Responsibility Principle, SRP)

    单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小.单一职责原则定义如下:单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域 ...

  10. 转帖 Oracle 主键的处理方法 http://www.cnblogs.com/Richardzhu/p/3470929.html

    Oracle之主键的创建.添加.删除操作   一.创建表的同时创建主键约束 1.1.无命名 SQL> create table jack (id int primary key not null ...