quartz 添加监听器listener
2024-08-31 15:50:27
全局注册,所有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;
}
}
重启服务,需要重新添加监听器。
最新文章
- JavaScript多文件下载
- 《玩转D语言系列》一、通过四个版本的 Hello Word 初识D语言
- Spring中@Async用法总结
- Hadoop.2.x_集群初建
- DevExpress GridView对表格的部分说明
- fancybox去除不受待见的水平滚动条
- 《Spring3.0就这么简单》第1章快速入门
- JPA project Change Event Handler问题解决[转]
- js jquery 等的地址
- linux下javaEE系统安装部署
- IOS 创建一张有颜色的UIImage
- java.lang.UnsatisfiedLinkError: no XXX in java.library.path
- Microsoft Dynamics 365 Developer Toolkit下载地址
- 习题集1b: 额外练习 (可选)
- Hbase使用MapReduce编程导出数据到HDFS
- 迁移基于Microsoft.DirectX的AudioRecoder类到SharpDX上
- node学习之cookie和session
- NOIP 车站分级 (luogu 1983 &; codevs 3294 &; vijos 1851) - 拓扑排序 - bitset
- Linux操作系统-系统安装与分区
- 帝国cms的list.var中使用php函数