- 浏览: 1064623 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (639)
- 服务器配置篇 (58)
- hibernate篇 (14)
- spring篇 (33)
- struts篇 (28)
- JS篇 (46)
- 其他技术篇 (46)
- 数据库集群配置 (6)
- JAVA基础相关 (48)
- 分布式框架HadHoop的应用 (2)
- FLEX篇 (8)
- SQLSERVER技术 (32)
- Android学习 (13)
- amchart学习笔记 (1)
- openfire+smark搭建即时通讯 (9)
- Linux学习 (18)
- Oracle数据库 (15)
- 网站优化技术 (12)
- mysql数据库 (2)
- 项目学习总结 (18)
- 工具类(JAVA) (12)
- 工具类(JS) (2)
- 设计模式 (10)
- Lucene学习 (24)
- EJB3学习 (6)
- Sphinx搜索引擎 (3)
- 工作中用到的软件小工具 (5)
- .NET (49)
- JAVA 连接SQLSERVER2008步骤 (1)
- MongoDB (19)
- Android手机开发 (3)
- Maven (6)
- vue (9)
- Shiro (4)
- mybatis (3)
- netty框架 (1)
- SpringCloud (3)
- spring-cloud (7)
- Git (1)
- dubbo (2)
- springboot (13)
- rocketmq (1)
- git学习 (2)
- kafka服务器 (2)
- linux (10)
- WEB系统辅助项目 (1)
- jenkins (2)
- docker (4)
- influxdb (3)
- python (2)
- nginx (1)
最新评论
-
jiangfuofu555:
这样数据量大,效率怎么样?
sqlserver 实现分页的前台代码 以及后台的sqlserver语句 -
w156445045:
博主请问下,如何做到实时的刷新呢,
另外我后台是Java 谢谢 ...
web 版本的汽车仪表盘,非常好看。还有各种图形 -
jackyin5918:
<transportConnector name=&qu ...
ActiveMQ的activemq.xml详细配置讲解 -
握着橄榄枝的人:
你这个不是spring1.x的吧
spring1.x使用AOP实例 -
xiaophai:
全乱套了!
openfire+spark搭建完美的及时通讯
首先关于Quartz的一篇详细介绍的文章可以参考我博客中的一篇关于介绍该框架的文章。
我做的该项目是一个网站预警系统,通过自己定义一个抽象类,采用策略模式,然后相关的监控子程序继承该类,配置配置文件的方式集成到预警系统中。
首先我通过我的主客户端程序的例子来解释Quartz来介绍我常用到的API
注释:QUARTZ中首先是一个组对应多个trigger
package client;
import org.dom4j.Document;
import org.quartz.CronExpression;
import org.quartz.CronTrigger;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import com.util.DataUtil;
import com.util.Log;
import com.util.PrintUtil;
import com.util.XmlHandle;
public class Client {
/**
* @param args
*/
public static XmlHandle xmlHandle = XmlHandle.getInstance();
public static Document document ;
public static String TRIGGER_GROUP="JOBCN_GROUP_MAIL";//我自己制定的组名称,指定名称
public static void main(String[] args) {
document = xmlHandle.getXmlFromFile("conf\\alarm-config.xml");
try {
String reload = xmlHandle.getSingleXmlData(document,"/conf","reload");
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
if("".equals(reload)||reload==null||"true".equals(reload))
{
}
//如果重启Client端,那么首先将所有的任务队列全部删除,然后重新组装CLIENT端
String[] triggerGroups = scheduler.getTriggerGroupNames();//该方法是得到所有的组名称
for (int i = 0; i < triggerGroups.length; i++) {
String[] triggers = scheduler.getTriggerNames(triggerGroups[i]);//该方法是得到该组里面所有的trigger
for (int j = 0; j < triggers.length; j++) {
Trigger tg = scheduler.getTrigger(triggers[j],
triggerGroups[i]);
if (tg instanceof CronTrigger)
{
//System.out.println(tg.getFullName()+":"+TRIGGER_GROUP+"."+"CronTrigger_"+bean.getClassName());
//System.out.println(tg.getJobName()+":"+tg.getJobGroup());
scheduler.deleteJob(tg.getJobName(), tg.getJobGroup());//该方法是删除指定的任务,传入的是trigger的名字和组名
}
}
}
JobDetail jobDetail = new JobDetail("JOB_MAIL", "Group_MAIL",AlarmClient.class);
//①-1:创建CronTrigger,指定组及名称
JobDataMap dataMap = new JobDataMap();
dataMap.put("bean", bean);//我们可以将我们要传入的某个类通过JobDataMap的载体传到对应的job中
jobDetail.setJobDataMap(dataMap);
CronTrigger cronTrigger = new CronTrigger("CronTrigger_MAIL",TRIGGER_GROUP);
CronExpression cexp = new CronExpression("0/30 * * * * ?");//①-2:定义Cron表达式
cronTrigger.setCronExpression(cexp);//①-3:设置Cron表达式
scheduler.scheduleJob(jobDetail, cronTrigger);//④ 注册并进行调度
scheduler.start();
} catch (Exception e) {
//e.printStackTrace();
}
}
}
具体任务类的定义,只注明主体方法:
public void execute(JobExecutionContext jobCtx) throws JobExecutionException {
//我们制定一个具体的任务,必须实现execute方法,该方法传入一个job的上下文,通过下面的代码来得到保存在datamap中的数据,注意,如果要通过载体传输的数据一定要实现Serializable接口
例如:我们传的 public class AlarmBean implements Serializable
JobDetail jobDetail =jobCtx.getJobDetail();
JobDataMap dataMap = jobDetail.getJobDataMap();
this.bean = getBean(dataMap);
System.out.println("Test:"+bean.getMailHost());
}
public AlarmBean getBean(Map map)
{
AlarmBean beans = null;
Iterator it = map.entrySet().iterator();
while(it.hasNext())
{
try {
Map.Entry m = (Map.Entry) it.next();
beans = (AlarmBean) m.getValue();
} catch (Exception e) {
e.printStackTrace();
}
}
return beans;
}
Quartz中SimpleTrigger的探讨
1.来写一个每隔10秒启动一次任务的例子.
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;
public class SimpleTriggerTest
{
public static void main(String[] args) throws Exception
{
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
// 系统当前时间10秒后
long startTime = System.currentTimeMillis() + 10000L;
SimpleTrigger trigger = new SimpleTrigger("myTrigger", null, new Date(
startTime), null, 0, 0L);
JobDetail jobDetail = new JobDetail();
jobDetail.setJobClass(StringTest.class);
jobDetail.setName("test");
jobDetail.setGroup("A");
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();
}
}
2.创建一个触发器,立即启动,每隔60秒,启动一次.
null,
new Date(),
null,
SimpleTrigger.REPEAT_INDEFINITELY,
60L * 1000L);
SimpleTrigger trigger = new SimpleTrigger("myTrigger",
"myGroup",
new Date(),
new Date(endTime),
SimpleTrigger.REPEAT_INDEFINITELY,
10L * 1000L);
cal.set(cal.HOUR, 10);
cal.set(cal.MINUTE, 30);
cal.set(cal.SECOND, 0);
cal.set(cal.MILLISECOND, 0);
Data startTime = cal.getTime()
SimpleTrigger trigger = new SimpleTrigger("myTrigger",
null,
startTime,
null,
5,
30L * 1000L);
仔细体会SimpleTrigger的例子,你会发现用这个制作执行计划会更简单方便.
- AlarmSystem.rar (114.6 KB)
- 下载次数: 8
发表评论
-
自定义注解之运行时注解(RetentionPolicy.RUNTIME)
2017-10-25 11:42 697对注解概念不了解的可以先看这个:Java注解基础概念总结 ... -
debug模式很慢的解决办法
2017-10-18 09:00 485今天照常使用MyEclipse 6.5 Blue Editi ... -
今天碰到项目中要做一个某一年月报表的页面的学习提高
2011-05-21 06:33 1012今天在项目中要做一个月报表,由于我采用的是ef 4.1的框架, ... -
预警系统
2010-12-16 15:28 1389根据公司需求,所编写的一个预警系统框架,将lib1.zip和l ... -
对quartz使用框架调度总结
2010-11-17 10:56 1779在项目中的使用需求: 1.可以使用一个A程序定期的去扫描配置 ... -
利用反射给JAVABEAN实例赋值
2010-11-15 22:08 1457package com.util; import java. ... -
logback 日志记录到数据库中
2010-11-10 11:04 6207<!--不采用连接池的配 ... -
logback 关于日志发送邮件配置总结
2010-11-10 09:40 4153<configuration debug="f ... -
sql server语句优化实例
2010-11-10 08:42 1495SQL语句优化有一个很重要的方法: 在Where中的条件表达 ... -
在新的项目中使用logback来作为日志记录系统
2010-11-09 16:19 4224Logback手册中文版文档版本:0.1发布日期:2010年4 ... -
Quartz 监听器的应用
2010-11-08 17:32 2356当我在项目中用到任务调用的时候,有必要在每次调用任务和任务出现 ... -
编写批处理命令来执行JAVA文件
2010-11-04 11:13 1851JAVA工程路径结构 Project ------l ... -
mysql中采用concat来拼接中文字符乱码解决方式
2010-10-13 17:47 2377mysql concat乱码问题解决concat(str1,s ... -
WEB工程加入FLEX技术,遇到跨域的问题
2010-09-16 08:15 1587在我FLEX博客中有提到怎么将FLEX整合到JAVA的WEB工 ... -
关于Struts2中如何去取得ServletContext的方法
2010-09-16 08:07 2743在我的上一篇文章中说到,将DB4O的DAO类放入到Servel ... -
关于DB4O的学习总结
2010-09-16 07:59 1722一下是一个DB4O的操作DAO。 作为DB4O在WEB项目中 ... -
SVN服务器配置总结
2010-09-16 07:40 3404软件下载 服务器和客户端安装 建立版本库(Reposito ...
相关推荐
Quartz定时任务框架适用于各种需要定期执行操作的场景,如数据备份、报表生成、系统维护、邮件发送等。在本项目中,你可以根据提供的代码学习如何构建一个易于维护和扩展的定时任务系统,同时也可以看到如何实现对...
总结,本Demo旨在通过SSM+Quartz的组合,提供一个可扩展的定时任务管理平台,开发者可以根据实际需求,调整任务逻辑和调度策略,以满足各种业务场景。同时,通过学习这个Demo,开发者可以深入理解Java定时任务的实现...
这个"Quartz定时任务简单列子"可能是一个简单的教程或者示例项目,用于展示如何在Java应用中集成和使用Quartz来执行预定的任务。 Quartz的核心概念包括Job(工作)、Trigger(触发器)和Scheduler(调度器)。Job是...
Quartz 是一个开源的作业调度框架,常用于Java应用程序中实现定时任务的管理。它提供了丰富的API和功能,使得开发者可以灵活地定义和控制任务的执行。本篇将重点介绍如何在Web环境中集成并使用Quartz,以及相关的...
4_主流定时任务框架优缺点和什么是分布式定时任务.mp4 5_环境搭建总体流程.mp4 6_前期准备-JDK.mp4 7_前期准备-Maven.mp4 8_前期准备-MySQL.mp4 9_前期准备-Zookeeper.mp4 10_知识点检测与小结.mp4 11_Elastic-Job...
总结,Quartz定时任务调度是Java开发中不可或缺的工具,尤其对于需要定时执行任务的系统来说。通过学习和掌握Quartz的使用,以及cron表达式的编写,我们可以构建出强大且灵活的任务调度系统。同时,利用插件系统和...
Quartz是Java领域中广泛应用的一款开源的作业调度框架,它允许开发者在应用程序中安排复杂的定时任务。本教程将深入探讨Quartz的核心概念、配置、API使用以及如何在实际项目中集成和管理定时任务。 一、Quartz核心...
本项目“Springboot2-Quartz 后台可动态配置的定时任务”是基于SpringBoot 2.x版本与Quartz Scheduler整合的一个示例,它展示了如何在后台管理系统中动态地创建、更新和删除定时任务,以及监控这些任务的状态,为...
Quartz是一款开源的作业调度框架,它允许开发者在Java应用程序中定义和执行复杂的定时任务。在Java世界中,Quartz是广泛使用的计划任务库,它提供了丰富的API来创建、调度和管理作业。这个"Quartz 定时任务依赖包 ...
【标题】"C# quartz.net 定时任务源码 可以远程控制"涉及的核心知识点主要集中在C#编程语言、Quartz.NET库以及系统服务的安装与管理。Quartz.NET是一个开源的作业调度框架,它允许开发人员在.NET环境中创建和执行...
本文将详细解析“spring quartz定时任务demo”这个项目,它提供了实现Java定时任务的实例,便于快速理解和应用。 首先,Quartz是一个开源的作业调度框架,支持复杂的调度策略,可以创建、调度和执行重复或一次性...
中的"完整的定时任务案例,导入Eclipse或者MyEclipse即可使用"意味着这个压缩包包含了一个可以运行的示例项目,开发者可以通过导入到Eclipse或MyEclipse这样的IDE中快速理解和学习如何设置和运行Quartz定时任务。...
总结,Quartz定时任务完全攻略涵盖了从基础概念理解到实战应用的方方面面。通过学习和掌握Quartz,开发者可以有效地管理和调度Java应用中的定时任务,提升系统的自动化水平和效率。在实际项目中,结合Quartz提供的...
这个"quartz定时任务Demo"是一个可以直接在Eclipse集成开发环境中运行的实例,它提供了清晰的注释,方便初学者理解和学习。 1. **Quartz基本概念** - **Job**:作业是实际执行的任务,是实现了`org.quartz.Job`...
分布式Quartz定时任务学习是现代企业级应用中一个重要的技术领域,尤其是在大数据处理、系统维护、数据同步等场景下,其重要性不言而喻。Quartz是一个开源的作业调度框架,它允许开发者定义和执行复杂的任务调度策略...
以下是对QuartZ定时任务的一些关键知识点的详细说明: 1. **基本概念**: - **Job**:QuartZ中的核心组件,代表一个可执行的任务。 - **Trigger**:触发器,定义了何时执行Job。 - **Scheduler**:调度器,负责...
Quartz是一款开源的Java定时任务框架,用于在Java应用程序中创建和管理定时任务。它提供了丰富的API和功能,使得开发者可以灵活地定义和调度任务,实现应用中的周期性任务执行。在"定时任务框架Quartz Demo"项目中,...
总之,Quartz.NET是一个功能强大的.NET定时任务框架,能够满足各种复杂的定时需求。通过学习和实践这个"Quartz.net-定时任务 Demo",你将能够熟练地在自己的项目中使用Quartz.NET来创建和管理定时任务。
Quartz是一款开源的作业调度框架,它允许在Java应用程序中创建和管理定时任务。Spring框架则是一个广泛应用的全面的企业级应用开发框架,它提供了一种将Quartz集成到Spring应用中的方式,使得任务调度变得更加简单和...