quartz学习之JobListener

Quartz JobListener 任务监听器

Quartz  Scheduler 可以对Job(任务)建立一个监听器,分别对任务执行  《之前, 之后, 取消》 3个阶段进行监听。 

实现监听器需要实现JobListener接口,然后注册到Scheduler上就可以了。

一:首先写一个监听器实现类

复制代码
 1 package com.gary.operation.jobdemo.example1;
 2 
 3 import org.quartz.JobExecutionContext;
 4 import org.quartz.JobExecutionException;
 5 import org.quartz.JobListener;
 6 
 7 public class MyJobListener implements JobListener {
 8 
 9     @Override
10     public String getName() {
11         return "MyJobListener";
12     }
13 
14     /**
15      * (1)
16      * 任务执行之前执行
17      * Called by the Scheduler when a JobDetail is about to be executed (an associated Trigger has occurred).
18      */
19     @Override
20     public void jobToBeExecuted(JobExecutionContext context) {
21         System.out.println("MyJobListener.jobToBeExecuted()");
22     }
23 
24     /**
25      * (2)
26      * 这个方法正常情况下不执行,但是如果当TriggerListener中的vetoJobExecution方法返回true时,那么执行这个方法.
27      * 需要注意的是 如果方法(2)执行 那么(1),(3)这个俩个方法不会执行,因为任务被终止了嘛.
28      * Called by the Scheduler when a JobDetail was about to be executed (an associated Trigger has occurred),
29      * but a TriggerListener vetoed it's execution.
30      */
31     @Override
32     public void jobExecutionVetoed(JobExecutionContext context) {
33         System.out.println("MyJobListener.jobExecutionVetoed()");
34     }
35 
36     /**
37      * (3)
38      * 任务执行完成后执行,jobException如果它不为空则说明任务在执行过程中出现了异常
39      * Called by the Scheduler after a JobDetail has been executed, and be for the associated Trigger's triggered(xx) method has been called.
40      */
41     @Override
42     public void jobWasExecuted(JobExecutionContext context,
43             JobExecutionException jobException) {
44         System.out.println("MyJobListener.jobWasExecuted()");
45     }
46 
47 }
复制代码

 

二:将这个监听器注册到Scheduler

假设有一个任务的key是 job1与 group1

// define the job and tie it to our HelloJob class
        JobDetail job = newJob(HelloJob.class)
            .withIdentity("job1", "group1")
            .build();

 

全局注册,所有Job都会起作用
Registering A JobListener With The Scheduler To Listen To All Jobs
sched.getListenerManager().addJobListener(new MyJobListener());

 

 

指定具体的任务
Registering A JobListener With The Scheduler To Listen To A Specific Job
Matcher<JobKey> matcher = KeyMatcher.keyEquals(new JobKey("job1", "group1"));
sched.getListenerManager().addJobListener(new MyJobListener(), matcher);

 

指定一组任务
Registering A JobListener With The Scheduler To Listen To All Jobs In a Group
GroupMatcher<JobKey> matcher = GroupMatcher.jobGroupEquals("group1");
sched.getListenerManager().addJobListener(new MyJobListener(), matcher);

 

可以根据组的名字匹配开头和结尾或包含
GroupMatcher<JobKey> matcher = GroupMatcher.groupStartsWith("g");
GroupMatcher<JobKey> matcher = GroupMatcher.groupContains("g");
sched.getListenerManager().addJobListener(new MyJobListener(), matcher);

 

分类: Quartz

本文转自:https://www.cnblogs.com/daxin/archive/2013/05/29/3105830.html
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值