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 ...
随机推荐
- 3 K8s安裝ELK+filebeat
1 Filebeat: apiVersion: v1 kind: Service metadata: name: XX spec: ports: - name: http port: targetPo ...
- kubeadm 搭建 K8S集群
kubeadm是K8s官方推荐的快速搭建K8s集群的方法. 环境: Ubuntu 16.04 1 安装docker Install Docker from Ubuntu’s repositories: ...
- springMVC绑定json参数之一
一.SpringMVC @RequestBody接收Json对象字符串 以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现, ...
- .net wcf调用java的需要认证的接口
1.wcf直接添加java的webservice地址,这都是常规操作,没必要好说 2.修改config配置文件,添加headers消息头节点,这个需要注意 3.OK直接调用里面的方法即可,全部搞定 & ...
- Android开发者学习必备:10个优质的源码供大家学习
最近看了一些开发的东西,汇总了一些源码.希望可以给大家有些帮助! 1.Android 源码解析—PagerSlidingTabStrippagerSlidingTabStrip 实现联动效果的原理是, ...
- linux日常管理-rsync后台服务方式-2
把本地的数据拷贝到远程 这里是个错误,read only.只允许读,不允许写. 改一下远程机器的配置文件 把read only改为no 拷贝到远程成功 tree一下远程机器的目录 ////////// ...
- Ok6410裸机驱动学习(二)ARM基础知识
1.ARM工作模式 ARM微处理器支持7种工作模式,分别为: l 用户模式(usr):ARM处理器正常的程序执行状态(Linux用户态程序) l 快速中断模式(fiq):用于高速数据传输或通道处理 ...
- Qt 按顺序保存多个文件
void MainWindow::on_pushButtonSnap_clicked() { ]; sprintf(image_name, "%s%d%s", "C:/i ...
- hive sql 查询 Child Error 错误追究
Diagnostic Messages for this Task: java.lang.Throwable: Child Error at org.apache.hadoop.map ...
- Java探索之旅(12)——equals方法及其覆盖
1.Object中的equals方法 java中的的基本数据类型:byte,short,char,int,long,float,double,boolean.==比较的是值. ❶作用:对于复合类型来说 ...