Quartz 2 Scheduler示例

Quartz是一个开源作业调度框架。 它可用于管理和计划应用程序中的作业。

步骤1:建立已完成的专案

创建一个Maven项目,如下所示。 (可以使用Maven或IDE插件来创建它)。

石英2

步骤2:图书馆

Quartz依赖项已添加到Maven的pom.xml中。 这些依赖库将由Maven Central Repository下载。

<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>OTV_Quartz</groupId><artifactId>OTV_Quartz</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><!-- Quartz library --><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.0.2</version></dependency>   <!-- Log4j library --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.16</version></dependency> </dependencies></project>

步骤3:建立新工作

通过实现如下所示的Quartz Job接口创建一个新的Job。 TestJob类指定将要安排的业务逻辑。

package com.otv.job;import org.apache.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;public class TestJob implements Job {private Logger log = Logger.getLogger(TestJob.class);public void execute(JobExecutionContext jExeCtx) throws JobExecutionException {log.debug("TestJob run successfully...");}}

步骤4:将工作与工作细节对象关联

创建的TestJob类与JobDetail对象链接。

JobDetail job = JobBuilder.newJob(TestJob.class).withIdentity("testJob").build();

第5步:创建新触发器

如下创建一个新的触发器。 触发器类别指定将要计划的作业的运行周期。 石英触发器有两种:

触发器 指定作业的开始时间,结束时间,运行时间。

CronTrigger 根据Unix cron表达式指定作业的开始时间,结束时间,运行时间。

//Trigger the job to run on the next round minute
Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(30).repeatForever()).build();// CronTrigger the job to run on the every 20 seconds
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("crontrigger","crontriggergroup1").withSchedule(CronScheduleBuilder.cronSchedule("10 * * * * ?")).build();

步骤6:建立SchedulerFactory

创建一个新的SchedulerFactory并从SchedulerFactory类获取一个Scheduler对象。

SchedulerFactory schFactory = new StdSchedulerFactory();
Scheduler sch = schFactory.getScheduler();

步骤7:启动排程器

调度程序对象已启动。

// Start the schedule
sch.start();

步骤8:安排工作

已安排TestJob:

// Tell quartz to schedule the job using the trigger
sch.scheduleJob(job, trigger);

步骤9:完整示例

TestJob将每分钟运行两次。

package com.otv;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;import com.otv.job.TestJob;/**
* @author onlinetechvision.com
* @since 17 Sept 2011
* @version 1.0.0
*
*/
public class JobScheduler {public static void main(String[] args) {try {// specify the job' s details..JobDetail job = JobBuilder.newJob(TestJob.class).withIdentity("testJob").build();// specify the running period of the jobTrigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(30).repeatForever()).build();//schedule the jobSchedulerFactory schFactory = new StdSchedulerFactory();Scheduler sch = schFactory.getScheduler();sch.start();sch.scheduleJob(job, trigger);} catch (SchedulerException e) {e.printStackTrace();}}}

步骤10:输出

运行JobScheduler Class时,输出将如下所示:

17.09.2011 23:39:37 DEBUG (TestJob.java:13) - TestJob run successfully...
17.09.2011 23:40:07 DEBUG (TestJob.java:13) - TestJob run successfully...
17.09.2011 23:40:37 DEBUG (TestJob.java:13) - TestJob run successfully...
17.09.2011 23:41:07 DEBUG (TestJob.java:13) - TestJob run successfully...

步骤11:下载

  • OTV_Quartz_Project

参考: 在线技术愿景博客上的JCG合作伙伴 Eren Avsarogullari的Quartz 2 Scheduler 。

翻译自: https://www.javacodegeeks.com/2012/07/quartz-2-scheduler-example.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql server 2008 com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 连接到主机

原内容搬迁到了新网站&#xff0c;给你带来的不便&#xff0c;敬请谅解&#xff01; 》 http://www.suanliutudousi.com/2017/08/28/sql-server-2008-com-microsoft-sqlserver-jdbc-sqlserverexception-%E9%80%9A%E8%BF%87%E7%AB%AF%E5%8F%A3-1433-%E8%BF%9E%E6%8E%A5%E5%88%B0…

如何通过网线连接两台电脑快速传输数据?

介绍 我们经常需要拷贝文件会用到类似U盘等工具&#xff0c;但我们有时在传输大文件时又苦于没有&#xff0c;那么大内存的转存工具。这时候我们就可以通过一条小小的网线连接两台电脑&#xff0c;形成一个小的局域网传输数据&#xff0c;因为是通过网线传输&#xff0c;所以传…

30分钟内使用MongoDB

最近&#xff0c;我被NoSQL错误咬住了-或是我的同事Mark Atwell提出的“燃烧在哪里&#xff01;” 运动。 尽管我无意于在不久的将来或可预见的将来回避友好的“ SELECT ... WHERE”&#xff0c;但我确实设法弄懂了一些代码。 在本文中&#xff0c;我分享了我在NoSQL世界中首次…

【Django】--ModelForm组件

ModelForm a.class Meta:model,#对应Model的  fieldsNone,#字段  excludeNone,#排除字段  labelsNone,#提示信息  help_texts None,#帮助提示信息  widgets None,#自定义插件  error_messages None,#自定义错误信息(整体错误信息from django.core.exceptions im…

mysql实际综合案例_Mysql综合案例

Mysql综合案例考核要点&#xff1a;创建数据表、单表查询、多表查询已知&#xff0c;有一个学生表student和一个分数表score&#xff0c;请按要求对这两个表进行操作。student表和score分数表的表结构分别如表1-1和表1-2所示。表1-1student表结构字段名数据类型主键外键非空唯一…

2012年I / O之后

从注册到赠品&#xff0c;每年的I / O疯狂都在不断发展。 在今年20分钟内被出售&#xff0c;并没有阻止Google赠送更多的东西。 以这种速度并有望在明年发布Google Glass&#xff0c;明年注册很可能会变得更加混乱&#xff01; 因此&#xff0c;Google&#xff0c;请停止提供免…

h5启动原生APP总结

许久没有写博客了&#xff0c;最近有个H5启动APP原生页面的需求&#xff0c;中间遇上一些坑&#xff0c;看了些网上的实现方案&#xff0c;特意来总结下 一、需要判断客户端的平台以及是否在微信浏览器中访问 1、客户端判断 在启动APP时&#xff0c;Android和IOS系统处理的方式…

mysql导入创建表空间_oracle创建表空间 用户 数据库导入和导出(转)

已经安装orcale 9i 和pl/sql(6.0)OracleJobSchedulerORCL、OracleOraDb10g_home1iSQL*PlusOracleOraDb10g_home1TNSListenerOracleServiceORCL第一个是oem控制台服务进程第二个是定时器和isql*plus的服务进程第三个是监听器的服务进程最后是数据库服务进程1. pl/sql客户机安装后…

什么时候使用Apache Camel?

Apache Camel是JVM / Java环境中我最喜欢的开源框架之一。 它可以轻松集成使用多种协议和技术的不同应用程序。 本文介绍了何时使用Apache Camel以及何时使用其他替代方法。 问题&#xff1a;企业应用程序集成&#xff08;EAI&#xff09; 由于新产品和新应用&#xff0c;几乎…

念整数

念整数&#xff08;5分&#xff09;题目内容&#xff1a; 你的程序要读入一个整数&#xff0c;范围是[-100000,100000]。然后&#xff0c;用汉语拼音将这个整数的每一位输出出来。 如输入1234&#xff0c;则输出&#xff1a; yi er san si注意&#xff0c;每个字的拼音之间有一…

python 比较运算符放在列表中_在Python3中将运算符放在列表中

我想把操作符作为一个列表&#xff0c;然后从列表中调用一个元素作为操作符。在如果我没有在运算符周围加引号&#xff0c;那么列表中逗号的语法错误&#xff1a;File "p22.py", line 24cat [,-,*]^SyntaxError: invalid syntax如果我把引语放在周围&#xff0c;那么…

软工个人总结

目录 一、个人提升二、写下属于自己的人月神话三、对下一届、后来人、自己的建议四、我的团队——Clover五、关于代码质量六、学过软件工程&#xff1f;七、自我介绍八、个性发挥一、个人提升 1. 开学初的目标 希望通过团队合作领会团队合作的内在精神&#xff0c;希望在分工完…

Tomcat上下文JUnit @Rule

创建测试上下文的JUnit Rule的初稿。 这可以用Spring上下文规则可用于 这个帖子 创建集成测试一个完整的Spring上下文。 import org.apache.commons.dbcp.BasicDataSource; import org.apache.log4j.Logger; import org.junit.rules.TestRule; import org.junit.runner.Descrip…

排序算法之(7)——堆排序

【堆排序的思路】 堆排序主要是利用了堆的性质。对于大顶堆&#xff1a;堆中的每一个节点的值都不小于它的孩子节点的值&#xff0c;具体可參考我的还有一篇博客http://blog.csdn.net/adminabcd/article/details/46880591&#xff0c;那么大顶堆的堆顶元素就是当前堆中全部元素…

HTML基础:基本标签简介(3)

html中有很多标签&#xff0c;下面介绍最基本的几个标签。 1、meta 是head标签中的一个辅助性标签。 有2个重要属性&#xff1a; &#xff08;1&#xff09;name 可以优化页面被搜索到的可能性。name中可以指定属性&#xff0c;content是属性值。 <html><head><…

java 字符码_Java字符编码

编码原理介绍(中文编码杂谈)&#xff1a;int -> byte可以直接使用强制类型转换: byte b (byte) aInt;这个操作是直接截取int中最低一个字节&#xff0c;如果int大于255&#xff0c;则值就会变得面目全非了byte -> int这里有两种情况&#xff0c;一种是要求保持值不变&am…

重新登录:重新登录

嗨&#xff0c;我再次回到日志中来&#xff0c;这是任何应用程序设计和开发的固有部分。 我是坚强的基础知识的忠实拥护者&#xff0c;在我的拙见中&#xff0c;日志记录是任何企业级应用程序中经常被忽略但基本的关键要素之一。 我已经写在此之前这里 。 为了理解当前文章&…

eclipse 下使用git clone

方法一&#xff1a;eclipse安装好git插件后&#xff0c;直接import-git-project from git- clone url-输入github的网址等就可以了方法二&#xff1a;使用git软件&#xff0c;到指定的目录&#xff0c;右击git bash here&#xff0c;git clone 加带有网址的文件.git,如&#xf…

linux -unrar解压缩

解压缩命令unrar的使用&#xff1a; $unrar --help用法: unrar <command>-<switch 1> -<switchN> <archive><files...><listfiles...><path_to_extract\><命令>e 解压文件到当前目录l[t,b] 列出压缩文档信…

终极JPA查询和技巧列表–第3部分

在阅读第三部分之前&#xff0c;请记住本系列的第一部分和第二部分 JPA&#xff1a;通过查询创建对象 JPA允许我们在查询内创建对象&#xff0c;并带有所需的值&#xff1a; package com.model;public class PersonDogAmountReport {private int dogAmount;private Person pe…