近期公司开发的数据交换系统嵌入了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任务调度初次使用记录的更多相关文章

  1. Quartz任务调度快速入门

    Quartz任务调度快速入门 概述 了解Quartz体系结构 Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器.任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的 ...

  2. Spring研磨分析、Quartz任务调度、Hibernate深入浅出系列文章笔记汇总

    Spring研磨分析.Quartz任务调度.Hibernate深入浅出系列文章笔记汇总 置顶2017年04月27日 10:46:45 阅读数:1213 这系列文章主要是对Spring.Quartz.H ...

  3. (转)Quartz任务调度(1)概念例析快速入门

    http://blog.csdn.net/qwe6112071/article/details/50991563 Quartz框架需求引入 在现实开发中,我们常常会遇到需要系统在特定时刻完成特定任务的 ...

  4. Quartz任务调度 服务日志+log4net打印日志+制作windows服务

    引言 现在许多的项目都需要定时的服务进行支撑,而我们经常用到的定时服务就是Quartz任务调度了.不过我们在使用定时Job进行获取的时候,有时候我们就需要记录一下自定义的日志,甚至我们还会对执行定时J ...

  5. Quartz任务调度(4)JobListener分版本超详细解析

    JobListener 我们的jobListener实现类必须实现其以下方法: 方法 说明 getName() getName() 方法返回一个字符串用以说明 JobListener 的名称.对于注册 ...

  6. 从零开始学 Java - Spring 使用 Quartz 任务调度定时器

    生活的味道 睁开眼看一看窗外的阳光,伸一个懒腰,拿起放在床一旁的水白开水,甜甜的味道,晃着尾巴东张西望的猫猫,在窗台上舞蹈.你向生活微笑,生活也向你微笑. 请你不要询问我的未来,这有些可笑.你问我你是 ...

  7. Quartz任务调度

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! Quartz任务调度 课程目标 : 了解Quartz框架 : 任务(Job)  触发器(Trig ...

  8. Quartz任务调度实践

    最近在写一个任务调度程序,需要每隔几秒查询数据库,并取出数据做一些处理操作.使用到了Quartz任务调度框架. 基本概念 Quartz包含几个重要的对象,分别为任务(Job),触发器(Trigger) ...

  9. tensorflow初次接触记录,我用python写的tensorflow第一个模型

    tensorflow初次接触记录,我用python写的tensorflow第一个模型 刚用python写的tensorflow机器学习代码,训练60000张手写文字图片,多层神经网络学习拟合17000 ...

随机推荐

  1. 3 K8s安裝ELK+filebeat

    1 Filebeat: apiVersion: v1 kind: Service metadata: name: XX spec: ports: - name: http port: targetPo ...

  2. kubeadm 搭建 K8S集群

    kubeadm是K8s官方推荐的快速搭建K8s集群的方法. 环境: Ubuntu 16.04 1 安装docker Install Docker from Ubuntu’s repositories: ...

  3. springMVC绑定json参数之一

    一.SpringMVC @RequestBody接收Json对象字符串 以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现, ...

  4. .net wcf调用java的需要认证的接口

    1.wcf直接添加java的webservice地址,这都是常规操作,没必要好说 2.修改config配置文件,添加headers消息头节点,这个需要注意 3.OK直接调用里面的方法即可,全部搞定 & ...

  5. Android开发者学习必备:10个优质的源码供大家学习

    最近看了一些开发的东西,汇总了一些源码.希望可以给大家有些帮助! 1.Android 源码解析—PagerSlidingTabStrippagerSlidingTabStrip 实现联动效果的原理是, ...

  6. linux日常管理-rsync后台服务方式-2

    把本地的数据拷贝到远程 这里是个错误,read only.只允许读,不允许写. 改一下远程机器的配置文件 把read only改为no 拷贝到远程成功 tree一下远程机器的目录 ////////// ...

  7. Ok6410裸机驱动学习(二)ARM基础知识

    1.ARM工作模式 ARM微处理器支持7种工作模式,分别为: l  用户模式(usr):ARM处理器正常的程序执行状态(Linux用户态程序) l  快速中断模式(fiq):用于高速数据传输或通道处理 ...

  8. Qt 按顺序保存多个文件

    void MainWindow::on_pushButtonSnap_clicked() { ]; sprintf(image_name, "%s%d%s", "C:/i ...

  9. hive sql 查询 Child Error 错误追究

    Diagnostic Messages for this Task: java.lang.Throwable: Child Error         at org.apache.hadoop.map ...

  10. Java探索之旅(12)——equals方法及其覆盖

    1.Object中的equals方法 java中的的基本数据类型:byte,short,char,int,long,float,double,boolean.==比较的是值. ❶作用:对于复合类型来说 ...