quartz任务调度初次使用记录
近期公司开发的数据交换系统嵌入了quartz任务调度功能,大概了解了任务调度的整个流程,项目中需要用到它来进行定时任务操作,对数据定时检查以及及时交换。
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 2.2.1。
任务调度使用:
public class InitServlet extends HttpServlet {
        @Override
	public void init() {
		this.ChangeInfoTask();
	}
        	/***
	 * 在线监控定时监控时间配置
	 */
	public void ChangeLogTask(){
    		/// 创建一个简单的触发器 
    		CronTrigger cronTrigger = new CronTrigger("ChangeLogTask", "ChangeLogTask");
    		try {
              // 设置触发时间 
    			cronTrigger.setCronExpression(new CronExpression(Configuration.getConfiguration(Constants.ChangeLogTime)));
              // 定义一个具体作业ChangeLogTask,并加入ChangeLogTask组,并且绑定到具体的作业类ChangeLogJob类上 
    			JobDetail jobDetail = new JobDetail("ChangeLogTask", "ChangeLogTask",ChangeLogJob.class);
               // 首先创建一个调度程序工厂      
    			SchedulerFactory schedulerFactory = new StdSchedulerFactory();
              //从工厂获取一个调度程序实例 
    			Scheduler scheduler = schedulerFactory.getScheduler();
              // 设置调度的具体作业和相关的触发器
    			scheduler.scheduleJob(jobDetail, cronTrigger);
              //启动调度程序
    			scheduler.start();
			} catch (Exception e) {
				logger.error("配置ChangeLog查询时间失败", e);
			}
		}
	}
在你的Job接口实现类里面,添加一些逻辑到execute()方法。一旦你配置好Job实现类并设定好调度时间表,Quartz将密切注意剩余时间。当调度程序确定该是通知你的作业的时候,Quartz框架将调用你Job实现类(作业类)上的execute()方法并允许做它该做的事情。无需报告任何东西给调度器或调用任何特定的东西。仅仅执行任务和结束任务即可。如果配置你的作业在随后再次被调用,Quartz框架将在恰当的时间再次调用它。
package com.appdept.task; import java.util.Date; import java.util.List;
import java.util.UUID; import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import com.appdept.common.constant.ServiceVariable; import com.appdept.entity.ServerInfo;
import com.appdept.entity.exchange.ChangeLog;
import com.appdept.entity.vo.ErrorMsg;
import com.appdept.entity.vo.ServiceToActionMsg;
import com.appdept.service.iface.ChangeLogService;
import com.appdept.service.iface.ServerInfoService;
import com.appdept.util.Configuration;
import com.appdept.util.HttpClientUtil;
import com.appdept.util.SpringContextUtil; @Service("ChangeLogService")
@Transactional
public class ChangeLogJob implements Job{
private ChangeLogService service;
private ServerInfoService service2; private String changeLogConfigure =Configuration.getConfiguration("ChangeLogConfigure");
public void execute(JobExecutionContext arg0) throws JobExecutionException {
this.service = (ChangeLogService) SpringContextUtil.getBean(ServiceVariable.ChangeLogService);
this.service2=(ServerInfoService) SpringContextUtil.getBean(ServiceVariable.ServerInfoService);
this.allInformation();
} public void addOnlineMonitoringInformation(String code,String http){
ChangeLog changeLog=new ChangeLog();
ServiceToActionMsg<ChangeLog> serviceToActionMsg = null;
try {
changeLog.setGuid(UUID.randomUUID().toString());
changeLog.setXzqdm(code);
changeLog.setJcsj(new Date());
changeLog.setYxzt(this.runningState(http));
changeLog.setBz("备用字段");
serviceToActionMsg =service.addChangeLog(changeLog);
}
catch (Exception e) {
e.printStackTrace();
new ErrorMsg("在线监控信息存储失败!", e);
}
} public int runningState(String http){
HttpClientUtil util = new HttpClientUtil();
try {
Integer t=util.getRequest(http);
if(t==200){
return 0;
}
} catch (Exception e) {
e.printStackTrace();
new ErrorMsg("链路检测失败!", e);
return 1;
}
return 1;
}
public void allInformation() {
try {
String[] list = changeLogConfigure.split(";");
ServiceToActionMsg<ServerInfo> serviceToActionMsg = null;
ServerInfo serverInfo=new ServerInfo();
for(String info:list){
serverInfo.setCityCode(info);
serviceToActionMsg = service2.findServerInfo(serverInfo);
this.addOnlineMonitoringInformation(info, serviceToActionMsg.getDataList().get(0).getTargetUrl());
}
} catch (Exception e) {
e.printStackTrace();
new ErrorMsg("查询所有行政区存储失败!", e);
}
}
public String getChangeLogConfigure() {
return changeLogConfigure;
}
public void setChangeLogConfigure(String changeLogConfigure) {
this.changeLogConfigure = changeLogConfigure;
}
}
quartz任务调度初次使用记录的更多相关文章
- Quartz任务调度快速入门
		
Quartz任务调度快速入门 概述 了解Quartz体系结构 Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器.任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的 ...
 - Spring研磨分析、Quartz任务调度、Hibernate深入浅出系列文章笔记汇总
		
Spring研磨分析.Quartz任务调度.Hibernate深入浅出系列文章笔记汇总 置顶2017年04月27日 10:46:45 阅读数:1213 这系列文章主要是对Spring.Quartz.H ...
 - (转)Quartz任务调度(1)概念例析快速入门
		
http://blog.csdn.net/qwe6112071/article/details/50991563 Quartz框架需求引入 在现实开发中,我们常常会遇到需要系统在特定时刻完成特定任务的 ...
 - Quartz任务调度 服务日志+log4net打印日志+制作windows服务
		
引言 现在许多的项目都需要定时的服务进行支撑,而我们经常用到的定时服务就是Quartz任务调度了.不过我们在使用定时Job进行获取的时候,有时候我们就需要记录一下自定义的日志,甚至我们还会对执行定时J ...
 - Quartz任务调度(4)JobListener分版本超详细解析
		
JobListener 我们的jobListener实现类必须实现其以下方法: 方法 说明 getName() getName() 方法返回一个字符串用以说明 JobListener 的名称.对于注册 ...
 - 从零开始学 Java - Spring 使用 Quartz 任务调度定时器
		
生活的味道 睁开眼看一看窗外的阳光,伸一个懒腰,拿起放在床一旁的水白开水,甜甜的味道,晃着尾巴东张西望的猫猫,在窗台上舞蹈.你向生活微笑,生活也向你微笑. 请你不要询问我的未来,这有些可笑.你问我你是 ...
 - Quartz任务调度
		
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! Quartz任务调度 课程目标 : 了解Quartz框架 : 任务(Job) 触发器(Trig ...
 - Quartz任务调度实践
		
最近在写一个任务调度程序,需要每隔几秒查询数据库,并取出数据做一些处理操作.使用到了Quartz任务调度框架. 基本概念 Quartz包含几个重要的对象,分别为任务(Job),触发器(Trigger) ...
 - tensorflow初次接触记录,我用python写的tensorflow第一个模型
		
tensorflow初次接触记录,我用python写的tensorflow第一个模型 刚用python写的tensorflow机器学习代码,训练60000张手写文字图片,多层神经网络学习拟合17000 ...
 
随机推荐
- C语言 mmap()函数(建立内存映射)  与  munmap()函数(解除内存映射)
			
mmap将一个文件或者其它对象映射进内存.文件被映射到多个页上,如果文件的大小不是所有页的大小之和, 最后一个页不被使用的空间将会清零.mmap在用户空间映射调用系统中作用很大. 条件 mmap()必 ...
 - Rails多个复选框--check_box_tag
			
一.简单粗暴的解决方法 view <% @roles.each do |role| %> <%= check_box_tag 'roles[]', role.id%> < ...
 - js浮点数运算出现误差解决方案
			
1.数据展示类(使用 toPrecision 凑整并 parseFloat 转成数字后再显示) parseFloat(1.4000000000000001.toPrecision(12)) === 1 ...
 - Python模块-subprocess模块
			
Run()方法 >>> a = subprocess.run(['df','-h']) 文件系统 容量 已用 可用 已用% 挂载点 udev 468M 0 468M 0% /dev ...
 - js提交数据时需判断是点击事件还是回车键
			
使用回车键实质还是点击事件==回车时将焦点聚居在某个标签上. Html代码: <div id="btlogin" class="btlogin">& ...
 - 问题:oracle ROW_NUMBER()over;结果: ORACLE 中的 ROW_NUMBER() OVER() 分析函数的用法
			
ORACLE 中的 ROW_NUMBER() OVER() 分析函数的用法 ROW_NUMBER() OVER(partition by col1 order by col2) 表示根据col1分组, ...
 - tomcat jsp 数字串传值异常问题
			
1.在下面的jsp内嵌java代码去除num之前,有某Controller已经有了操作: request.getSession().setAttribute("num", ...
 - IPSec方案部署(多业务场景)
			
技术点详解—IPSec方案部署 通过前面几期的介绍可以发现IPSec所涉及的参数很多,在具体方案部署过程中有许多灵活选择的地方,本期专栏就专门对IPSec在几种典型环境中的方案部署进行介绍. 一. ...
 - hadoop-2.3.0-cdh5.1.0完全分布式集群配置及HA配置(待)
			
一.安装前准备: 操作系统:CentOS 6.5 64位操作系统 环境:jdk1.7.0_45以上,本次采用jdk-7u55-linux-x64.tar.gz master01 10.10.2.57 ...
 - hdu1081
			
#include<iostream> using namespace std; int GetMaxNum(int a[],int n) //求最大字段和 { int i,sum=0,ma ...