全局注册,所有Job都会起作用

JobCountListener listener = new JobCountListener();
sched.getListenerManager().addJobListener(listener);

给固定的job添加监听器

JobCountListener listener = new JobCountListener();
Matcher<JobKey> matcher = KeyMatcher.keyEquals(new JobKey("hello3", "group1"));
scheduler.getListenerManager().addJobListener(listener, matcher);

指定一组任务

GroupMatcher<JobKey> matcher = GroupMatcher.jobGroupEquals("group1");
sched.getListenerManager().addJobListener(new MyJobListener(), matcher);

可以根据组的名字匹配开头和结尾或包含

JobCountListener listener = new JobCountListener();
GroupMatcher<JobKey> matcher = GroupMatcher.groupStartsWith("g");
//GroupMatcher<JobKey> matcher = GroupMatcher.groupContains("g");
scheduler.getListenerManager().addJobListener(listener, matcher);
/**
* @author sky
*/
public class JobCountListener implements org.quartz.JobListener {
private Integer count; public String getName() {
return "job监听";
} public void jobToBeExecuted(JobExecutionContext jobExecutionContext) {
System.out.println("任务执行前。");
} public void jobExecutionVetoed(JobExecutionContext jobExecutionContext) {
System.out.println("如果当TriggerListener中的vetoJobExecution方法返回true时,那么执行这个方法。任务被终止");
} public void jobWasExecuted(JobExecutionContext jobExecutionContext, JobExecutionException e) {
JobDetail jobDetail = jobExecutionContext.getJobDetail();
System.out.println("Job :" + jobDetail.getKey().getGroup() + "." + jobDetail.getKey().getName());
Integer current = (Integer) jobExecutionContext.getJobDetail().getJobDataMap().get("count");
System.out.println("调用次数:" + current);
} }

  

package com.sky.JobSchedule.Job;

import org.quartz.*;
import org.springframework.stereotype.Component; import java.text.SimpleDateFormat;
import java.util.Date; /**
* @author sky
*/
@Component
@DisallowConcurrentExecution
@PersistJobDataAfterExecution
public class JobCron implements Job {
String name; public JobCron() {
System.out.println("Hello, Quartz sky! ----------------------");
} public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
JobDataMap jobDataMap = jobExecutionContext.getJobDetail().getJobDataMap();
Integer count = (Integer) jobDataMap.get("count");
if(count==null){
count=0;
}
count++;
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("Hello, " + count + " sky !" + formatter.format(new Date()));
jobExecutionContext.getJobDetail().getJobDataMap().put("count", count);
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}

重启服务,需要重新添加监听器。

最新文章

  1. JavaScript多文件下载
  2. 《玩转D语言系列》一、通过四个版本的 Hello Word 初识D语言
  3. Spring中@Async用法总结
  4. Hadoop.2.x_集群初建
  5. DevExpress GridView对表格的部分说明
  6. fancybox去除不受待见的水平滚动条
  7. 《Spring3.0就这么简单》第1章快速入门
  8. JPA project Change Event Handler问题解决[转]
  9. js jquery 等的地址
  10. linux下javaEE系统安装部署
  11. IOS 创建一张有颜色的UIImage
  12. java.lang.UnsatisfiedLinkError: no XXX in java.library.path
  13. Microsoft Dynamics 365 Developer Toolkit下载地址
  14. 习题集1b: 额外练习 (可选)
  15. Hbase使用MapReduce编程导出数据到HDFS
  16. 迁移基于Microsoft.DirectX的AudioRecoder类到SharpDX上
  17. node学习之cookie和session
  18. NOIP 车站分级 (luogu 1983 &amp; codevs 3294 &amp; vijos 1851) - 拓扑排序 - bitset
  19. Linux操作系统-系统安装与分区
  20. 帝国cms的list.var中使用php函数

热门文章

  1. 第五周-磁盘分区GPT、shell脚本练习、lvm详解
  2. yum-config-manager --add-repo=
  3. HTTP Analyzer(实时分析HTTP/HTTPS数据流)
  4. 如何用一次性密码通过 SSH 安全登录 Linux
  5. ubuntu鼠标和触摸板的禁用
  6. Ignatius and the Princess III(杭电1028)(母函数)
  7. 关于webpack插件
  8. CUDA学习笔记(四)
  9. PostgreSQL Replication之第七章 理解Linux高可用(1)
  10. 射击的乐趣:WIN32诠释打飞机游戏