14.SpringBoot2整合Quartz2-自定义Scheduler监听器

Quartz支持对调度器Scheduler进行监听, 可以监听调度器新增Job, 删除Job, 暂停Job, 恢复Job 等操作. Quartz 整合SpringBoot2之后, 配置Scheduler监听器的方式也是一样. 但是需要注意:

  • 一个Scheduler 只有一个监听器, 全局唯一
  • Scheduler监听器不会进行持久化, 所以项目重启之后需要重新注册

1. 自定义Scheduler监听器

笔者采用继承SchedulerListenerSupport方式定义自己的调度器监听器, 这样可以选择实现自己关注的方法.

/**
 * @Description: 调度器监听器
 * @author: zongf
 * @date: 2019-04-12 15:41
 */
public class MySchedulerListener extends SchedulerListenerSupport {

    Logger logger = LoggerFactory.getLogger(getClass());


    @Override
    public void jobAdded(JobDetail jobDetail) {
        logger.info("添加job:" + jobDetail.getKey());
    }

    @Override
    public void schedulerStarting() {
        logger.info("调度器开始启动-schedulerStarting");
    }

    @Override
    public void schedulerStarted() {
        logger.info("调度启动完成-schedulerStarted");
    }
}

2.注册Scheduler监听器

  • 笔者在Quartz整合配置类中QuartzConfig中配置SchedulerListener, 需要注意的是, 这样写会向容器中新增一个beanName为scheduler的Scheduler, 这样容器中便有了两个Scheduler, 另一个beanName为schedulerFactoryBean.
  • SchedulerListener 全局唯一
// 会向spring容器中新增一个beanName为scheduler的Scheduler, 此时容器中变有了两个Scheduler
@Bean
public Scheduler scheduler(Scheduler scheduler) throws Exception {
    // 添加Scheduler 监听器
    scheduler.getListenerManager().addSchedulerListener(new MySchedulerListener());
    return scheduler;
}

3.控制台输出

[2019-04-12 15:55:35:799][main][INFO ][o.z.l.q.l.l.MySchedulerListener]- 调度器开始启动-schedulerStarting
[2019-04-12 15:55:35:813][main][INFO ][o.s.s.quartz.LocalDataSourceJobStore]- ClusterManager: detected 1 failed or restarted instances.
[2019-04-12 15:55:35:813][main][INFO ][o.s.s.quartz.LocalDataSourceJobStore]- ClusterManager: Scanning for instance "zongf-PC1555055561330"'s failed in-progress jobs.
[2019-04-12 15:55:35:828][main][INFO ][o.s.s.quartz.LocalDataSourceJobStore]- ClusterManager: ......Scheduled 1 recoverable job(s) for recovery.
[2019-04-12 15:55:35:831][main][INFO ][org.quartz.core.QuartzScheduler]- Scheduler MyScheduler_$_zongf-PC1555055735506 started.
[2019-04-12 15:55:35:831][main][INFO ][o.z.l.q.l.l.MySchedulerListener]- 调度启动完成-schedulerStarted
[2019-04-12 15:55:35:847][main][INFO ][o.z.l.q.l.l.MySchedulerListener]- 添加job:group1.helloJob

你可能感兴趣的:(quartz,quartz,2.x)