阅读更多

1顶
0踩

研发管理

一.概述

listener是一个监听器对象,用于监听scheduler中发生的事件,然后执行相应的操作;你可能已经猜到了,TriggerListeners接受与trigger相关的事件,JobListeners接受与jobs相关的事件。

 

二.JobListener监听器

定义job类,用来打印任务详情,代码如下:

package com.ickes.job;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
 * 实现Job接口,定义运行的任务
 * @author Ickes
 */
public class SimpleJob implements Job {

	public void execute(JobExecutionContext context)
			throws JobExecutionException {
		//打印任务详情
		System.out.println(
				context.getJobDetail().getGroup() 
				+"——"+context.getJobDetail().getName()
				+"——"+context.getTrigger().getName()
				+"——"+context.getTrigger().getGroup());
	}

}

 

JobListener监听器类,代码如下:

package com.ickes.job;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobListener;

/**
 * JobListener监听器
 * @author Ickes
 */
public class Job1Listener implements JobListener {
	/**
	 * 返回当前监听器的名字,这个方法必须被写他的返回值;
	 * 因为listener需要通过其getName()方法广播它的名称
	 */
	public String getName() {
		  return "Job1Listener";
	}
	
	/**
	 * 任务被触发前触发
	 */
	public void jobToBeExecuted(JobExecutionContext context) {
		System.out.println(context.getJobDetail().getName()+":A");
	}
	/**
	 * 这个不管
	 */
	public void jobExecutionVetoed(JobExecutionContext context) {
		System.out.println(context.getJobDetail().getName()+":B");
	}
	/**
	 * 任务调度完成后触发
	 */
	public void jobWasExecuted(JobExecutionContext context,
			JobExecutionException jobException) {
		System.out.println(context.getJobDetail().getName()+":C");
	}

}

 

JobListener监听器测试类,代码如下:

 

package com.ickes.job;

import java.util.Date;

import org.quartz.JobDetail;
import org.quartz.JobListener;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;

/**
 * @author Ickes
 */
public class ListenerDemo {
	public static void main(String[] args) throws Exception {
		//第一步:创建一个JobDetail实例
		JobDetail jobDetail = new JobDetail("j_job1","j_group1", SimpleJob.class);
		//第二步:通过SimpleTrigger触发器定义调度规则:马上启动,每2秒运行一次,共运行100次
		SimpleTrigger simpleTrigger = new SimpleTrigger("t_job1","t_group1"); 
		simpleTrigger.setStartTime(new Date());
		simpleTrigger.setEndTime(new Date(System.currentTimeMillis()+1000*5));
        simpleTrigger.setRepeatInterval(2000); //运行间隔单位为毫秒  
        simpleTrigger.setRepeatCount(10);     //运行次数  
        
		//第三步:通过SchedulerFactory获取一个调度器实例
		SchedulerFactory schedulerFactory = new StdSchedulerFactory();
		Scheduler scheduler = schedulerFactory.getScheduler();
		//第四步:关联监听器
		JobListener listener = new Job1Listener();
		scheduler.addJobListener(listener);
		jobDetail.addJobListener(listener.getName());
		
		//第五步:将job跟trigger注册到scheduler中进行调度
		scheduler.scheduleJob(jobDetail, simpleTrigger);
		//第六步:调度启动
		scheduler.start();		
		
	}
}

 

三.TriggerListener监听器

Trigger1Listener监听器类,该类实现了TriggerListener接口,代码如下:

package com.ickes.job;

import org.quartz.JobExecutionContext;
import org.quartz.Trigger;
import org.quartz.TriggerListener;
/**
 * 
 * @author Ickes
 *
 */
public class Trigger1Listener implements TriggerListener {

	public String getName() {
		return "Trigger1Listener";
	}
	/**
	 * 被调度时触发,和它相关的org.quartz.jobdetail即将执行。
	 * 该方法优先vetoJobExecution()执行
	 */
	public void triggerFired(Trigger trigger, JobExecutionContext context) {
		System.out.println("A");
	}
	/**
	 * 被调度时触发,和它相关的org.quartz.jobdetail即将执行。
	 */
	public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context) {
		System.out.println("B");
		return false;
	}
	/**
	 * 被调度时,触发失败时触发
	 */
	public void triggerMisfired(Trigger trigger) {
		System.out.println("C");
	}
	/**
	 * 执行完毕时触发
	 */
	public void triggerComplete(Trigger trigger, JobExecutionContext context,
			int triggerInstructionCode) {
		System.out.println("D");
	}

}

 

TriggerListener监听器测试类TriggerListenerDemo代码如下:

package com.ickes.job;

import java.util.Date;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.TriggerListener;
import org.quartz.impl.StdSchedulerFactory;

/**
 * @author Ickes
 */
public class TriggerListenerDemo {
	public static void main(String[] args) throws Exception {
		//第一步:创建一个JobDetail实例
		JobDetail jobDetail = new JobDetail("j_job1","j_group1", SimpleJob.class);
		//第二步:通过SimpleTrigger触发器定义调度规则:马上启动,每2秒运行一次,共运行100次
		SimpleTrigger simpleTrigger = new SimpleTrigger("t_job1","t_group1"); 
		simpleTrigger.setStartTime(new Date());
		//5秒钟还有任务没有完成,所以
		simpleTrigger.setEndTime(new Date(System.currentTimeMillis()+1000*5));
        simpleTrigger.setRepeatInterval(2000); //运行间隔单位为毫秒  
        simpleTrigger.setRepeatCount(10);      //运行次数  
        
		//第三步:通过SchedulerFactory获取一个调度器实例
		SchedulerFactory schedulerFactory = new StdSchedulerFactory();
		Scheduler scheduler = schedulerFactory.getScheduler();
		//第四步:关联监听器
		TriggerListener listener = new Trigger1Listener();
		scheduler.addTriggerListener(listener);
		simpleTrigger.addTriggerListener(listener.getName());
		
		//第五步:将job跟trigger注册到scheduler中进行调度
		scheduler.scheduleJob(jobDetail, simpleTrigger);
		//第六步:调度启动
		scheduler.start();		
		
	}
}

 

 

1
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Quartz.Net进阶之五:TriggerListener 、JobListener 和 SchedulerListener

    一、介绍 今天开始学习监听器,就是 Listener,在Quartz.Net 中,主要包含3类的监听器,主要内容包括:TriggerListener 、JobListener 和 SchedulerListener 这三个东东的内容,这个东西不是很难,内容也不是很多,...

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

    在《spring学习笔记(15)趣谈spring 事件:实现业务逻辑解耦,异步调用提升用户体验》我们通过实例分析讲解了spring的事件机制,或许你会觉得其中的配置略显繁琐,而在Quartz框架中,它为我们集成了强大的事件机制,...

  • 任务调度框架Quartz(一) Quartz——一个强大的定时任务调度框架

    Quartz,水晶、石英,一个简单朴素有美丽的名字,在Java程序界,Quartz大名鼎鼎,很多Java应用几乎都集成或构建了一个定时任务调度系统,Quartz是一个定时任务调度框架。 何为定时任务调度框架?简而言之,它可以...

  • Quartz 定时任务 (2) —— 事件监听器

    一、TriggerListener 触发器监听器 跟触发器有关的事件包括**:触发器被触发,触发器触发失败,以及触发器触发完成**(触发器完成后作业任务开始运行) 1. TriggerListener 接口源码 public interface ...

  • Quartz学习——Quartz介绍(一)

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,是完全由java开发的一个开源的任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他...

  • Quartz框架源码分析——主要组件

    简介 使用 spring集成quartz quartz on springboot quartz的原理

  • Quartz与Spring集成——创建调度器

    在《Quartz与Spring集成—— SchedulerFactoryBean的初始化分析》一文中介绍过,Spring集成Quartz时的初始化过程。创建调度器也是初始化过程中的一步,本文将着重介绍Quartz初始化时是如何创建调度器的。

  • Quartz任务调度——快速入门

    一、Quartz概念 Quartz 是 OpenSymphony 开源组织在 Job scheduling 领域又一个开源项目,它可以与 J2EE 与 J2SE 应用...Quartz可以被实例化,作为独立的项目集群(负载平衡和故障转移功能),用于作业的执行 三、Quar

  • Quartz与Spring集成—— SchedulerFactoryBean的初始化分析

    Quartz是一个开源的定时调度框架,支持集群部署。我们可以通过其Java API来使用它,或者通过Spring来配置与管理,也可以结合使用两种方式。本文重点分析Quartz与Spring集成时的初始化过程。

  • Quartz.NET开源库实现作业定时调度——简单示例

    一、Quartz.NET简介 1.1、.NET Framework自带的Timer定时器介绍 很多的软件项目中都会使用到定时任务、定时轮询数据库同步,定时邮件通知等功能。.NET Framework具有“内置”定时器功能,通过System.Timers.Timer...

  • FPA-花授粉优化.rar

    多种智能优化算法设计开发应用,可供学习交流,不断更新资源

  • 医院口腔科高压蒸汽灭菌登记表.docx

    医院口腔科高压蒸汽灭菌登记表.docx

  • 微信小程序-城市天气2小程序项目源码-原生开发框架-含效果截图示例.zip

    微信小程序凭借其独特的优势,在移动应用市场中占据了一席之地。首先,微信小程序无需下载安装,用户通过微信即可直接使用,极大地降低了使用门槛。其次,小程序拥有与原生应用相近的用户体验,同时加载速度快,响应迅速,保证了良好的使用感受。此外,微信小程序还提供了丰富的API接口,支持开发者轻松接入微信支付、用户授权等功能,为开发者提供了更多的可能性。 微信小程序-项目源码-原生开发框架。想要快速打造爆款小程序吗?这里有一份原生开发框架的项目源码等你来探索!基于微信小程序的强大生态,这份源码将带你领略原生开发的魅力,实现快速迭代与高效开发。从用户授权到微信支付,从界面设计到功能实现,一切尽在掌握。赶快下载查看,让你的小程序项目在竞争激烈的市场中脱颖而出!

  • 基于Springboot微服务的车联网位置信息管理软件的设计与实现+论文

    基于Spring Boot微服务的车联网位置信息管理软件旨在通过现代化技术提升车辆位置信息的实时监控与管理效率。以下是该系统的功能模块和技术实现的简要介绍: 系统功能模块 车辆定位与追踪:通过集成GPS等定位技术,实时获取车辆位置信息,并提供车辆追踪功能。 位置信息管理:存储、查询、更新车辆位置信息,支持历史轨迹回放和位置数据统计分析。 报警与预警:根据预设规则,对异常位置信息进行报警和预警,如超速、越界等。 用户管理:支持用户注册、登录、权限管理等操作,确保系统安全和数据保密。 技术实现 后端技术:采用Spring Boot框架构建微服务架构,利用Maven进行项目管理,确保系统的高性能和稳定性。 数据库:使用MySQL数据库存储车辆位置信息、用户数据等关键信息,支持高效的数据查询和统计分析。 定位技术:集成GPS等定位技术,实现车辆位置的实时获取和追踪。 前端技术:结合Vue.js等前端框架,构建直观、友好的用户界面,提供丰富的交互体验。 该系统通过Spring Boot微服务架构和现代化技术,实现了车联网位置信息的实时监控与管理,为车辆管理提供了有力的技术支持。

  • MSChartExtension-V3.9.2.zip

    本文介绍如何使用改进版本的Largest-Triangle-Three-Bucket(LTTB)算法使用WinForms应用程序的MSChart组件绘制大型数据点,以提高应用程序性能和数据可见性。

  • VB将程序图标在添加到任务栏

    实现功能: 1.将程序图标添加到任务栏; 2.从任务栏里移出程序图标; 3.从任务栏里隐藏图标;

  • MATLAB设计_计算N-D数组X中的缺失数据.zip.temp

    MATLAB设计_计算N-D数组X中的缺失数据.zip.temp

  • MATLAB设计_permn彼尔姆算法.zip

    MATLAB设计_permn彼尔姆算法.zip

  • BUU刷题-Reveser-FlareOn5-Web2.0(WebAssembly逆向分析)

    BUU刷题-Reveser-FlareOn5_Web2.0(WebAssembly逆向分析)

Global site tag (gtag.js) - Google Analytics