Quartz的监听器(六)下

简介: Quartz的监听器(六)下

四. SchedulerListener

四.一 接口定义

org.quartz.SchedulerListener

package org.quartz;
public interface SchedulerListener {
    void jobScheduled(Trigger trigger);
    void jobUnscheduled(TriggerKey triggerKey);
    void triggerFinalized(Trigger trigger);
    void triggerPaused(TriggerKey triggerKey);
    void triggersPaused(String triggerGroup);
    void triggerResumed(TriggerKey triggerKey);
    void triggersResumed(String triggerGroup);
    void jobAdded(JobDetail jobDetail);
    void jobDeleted(JobKey jobKey);
    void jobPaused(JobKey jobKey);
    void jobsPaused(String jobGroup);
    void jobResumed(JobKey jobKey);
    void jobsResumed(String jobGroup);
    void schedulerError(String msg, SchedulerException cause);
    void schedulerInStandbyMode();
    void schedulerStarted();
    void schedulerStarting();
    void schedulerShutdown();
    void schedulerShuttingdown();
    void schedulingDataCleared();
}


定义了二十个方法

image.png

image.png


四.二 接口监听实例

四.二.一 编写自定义监听,实现 SchedulerListener

public class MySchedulerListener implements SchedulerListener {
    @Override
    public void jobScheduled(Trigger trigger) {
        System.out.println("用于部署JobDetail时调用");
    }
    @Override
    public void jobUnscheduled(TriggerKey triggerKey) {
        System.out.println("用于卸载JobDetail时调用");
    }
    @Override
    public void triggerFinalized(Trigger trigger) {
        System.out.println("当一个 Trigger 来到了再也不会触发的状态时调用这个方法。<br/>除非这个 Job 已设置成了持久性,否则它就会从 Scheduler 中移除");
    }
    @Override
    public void triggerPaused(TriggerKey triggerKey) {
        System.out.println("Scheduler 调用这个方法是发生在一个 Trigger被暂停时");
    }
    @Override
    public void triggersPaused(String s) {
        System.out.println("Scheduler 调用这个方法是发生在一个 Trigger 组被暂停时。<br/>假如是 Trigger 组的话,triggerName 参数将为 null");
    }
    @Override
    public void triggerResumed(TriggerKey triggerKey) {
        System.out.println("Scheduler 调用这个方法是发生成一个 Trigger从暂停中恢复时");
    }
    @Override
    public void triggersResumed(String s) {
        System.out.println("Scheduler 调用这个方法是发生成一个 Trigger 组从暂停中恢复时。假如是 Trigger 组的话,triggerName 参数将为 null。");
    }
    @Override
    public void jobAdded(JobDetail jobDetail) {
        System.out.println("添加job时调用");
    }
    @Override
    public void jobDeleted(JobKey jobKey) {
        System.out.println("删除Job时调用");
    }
    @Override
    public void jobPaused(JobKey jobKey) {
        System.out.println("挂起Job时调用");
    }
    @Override
    public void jobsPaused(String s) {
        System.out.println("挂起jobs组时调用,假如是组的话,参数将为null");
    }
    @Override
    public void jobResumed(JobKey jobKey) {
        System.out.println("恢复Job时调用");
    }
    @Override
    public void jobsResumed(String s) {
        System.out.println("恢复Job组时调用,假如是组的话,参数将为null");
    }
    @Override
    public void schedulerError(String s, SchedulerException e) {
        System.out.println("在 Scheduler 的正常运行期间产生一个严重错误时调用这个方法");
    }
    @Override
    public void schedulerInStandbyMode() {
        System.out.println("当Scheduler处于StandBy模式时,调用该方法");
    }
    @Override
    public void schedulerStarted() {
        System.out.println("当Scheduler 开启时,调用该方法");
    }
    @Override
    public void  schedulerStarting() {
        System.out.println("当Scheduler 开启中,调用该方法");
    }
    @Override
    public void schedulerShutdown() {
        System.out.println("当Scheduler停止时,调用该方法");
    }
    @Override
    public void schedulerShuttingdown() {
        System.out.println("当Scheduler停止中,调用该方法");
    }
    @Override
    public void schedulingDataCleared() {
        System.out.println("当Scheduler中的数据被清除时,调用该方法");
    }
}


四.二.二 编写 SchedulerListener 监听 Demo

public class SchedulerListenerSchedularDemo {
    public static void main(String[] args) throws  Exception  {
        //获取Scheduler
        Scheduler scheduler= StdSchedulerFactory.getDefaultScheduler();
        // 创建 JobDetail
        JobDetail jobDetail=JobBuilder.newJob(MyJob.class)
                .withIdentity("job1","group1")
                .build();
        //创建 Trigger
        Trigger trigger= TriggerBuilder.newTrigger()
                .withIdentity("trigger1","group1") //设置标识
                .startNow()
                .withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ? "))
                .build();
        //关联 job和 trigger
        scheduler.scheduleJob(jobDetail,trigger);
        //注册监听器
        //注册 Scheduler 全局触发器, 没有局部触发器
        scheduler.getListenerManager().addSchedulerListener(new MySchedulerListener());
        //启动 scheduler
        scheduler.start();
        Thread.sleep(5000L);
        scheduler.shutdown();
    }
}


四.二.三 控制台打印输出


image.png


监听器,主要是 JobListener 和 TriggerListener 用得比较多一些。

相关文章
|
1月前
|
Java 容器
SpringBoot3 事件和监听器
SpringBoot3 事件和监听器
|
1月前
|
移动开发 前端开发 Java
Flowable 任务监听器与执行监听器的介绍
Flowable 任务监听器与执行监听器的介绍
163 0
|
9月前
|
XML 数据格式
SPRING-QUARTZ 定时器 给TARGETMETHOD传递参数
SPRING-QUARTZ 定时器 给TARGETMETHOD传递参数
117 0
|
Java 调度
Springboot 使用Quartz定时器执行多个定时任务 配置篇
Springboot 使用Quartz定时器执行多个定时任务 配置篇
665 0
Springboot 使用Quartz定时器执行多个定时任务 配置篇
|
Java 调度 Maven
定时任务组件Quartz
定时任务组件Quartz
定时任务组件Quartz
|
存储 Java 数据库连接
这种方式整合Quartz你见过吗?
`Quartz`是一款优秀的任务调度框架,支持内存、JDBC的形式来存储未执行的任务列表,支持多个任务节点同时执行任务,支持任务漂移到不同的节点执行。
|
调度
Quartz的监听器(六)上
Quartz的监听器(六)上
181 0
Quartz的监听器(六)上
|
数据库
Quartz的监听器(六)中
Quartz的监听器(六)中
167 0
Quartz的监听器(六)中
Quartz 定时任务管理类
Quartz 定时任务管理类
151 0