六、Quartz监听器

监听器

JobListener

@Log4j
public class MyJobListener implements JobListener {
    @Override
    public String getName() {
        return "my-job-listener";
    }

    @Override
    public void jobToBeExecuted(JobExecutionContext context) {
        log.info("----任务执行之前进入此方法----");
    }

    @Override
    public void jobExecutionVetoed(JobExecutionContext context) {
        log.info("----任务被TriggerListener拒绝执行之后进入此方法----");
    }

    @Override
    public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) {
        log.info("----任务执行之后进入此方法----");
    }
}

TriggerListener

@Log4j
public class MyTriggerListener implements TriggerListener {
    @Override
    public String getName() {
        return "my-trigger-listener";
    }

    @Override
    public void triggerFired(Trigger trigger, JobExecutionContext context) {
        log.info("任务即将被执行前,触发调用");
    }

    @Override
    public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context) {
        log.info("如果返回true,则否决掉本次jobDetail的执行");
        return false;
    }

    @Override
    public void triggerMisfired(Trigger trigger) {
        log.info("如果任务misfired(未执行),则调用本方法");
    }

    @Override
    public void triggerComplete(Trigger trigger, JobExecutionContext context, Trigger.CompletedExecutionInstruction triggerInstructionCode) {
        log.info("触发执行结束时调用");
    }
}

调度

        JobDetail jobDetail = JobBuilder.newJob(MySpringQuartzJob.class)
                .withIdentity("job-2")
                .build();

        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("trigger-2")
                .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(30))
                .startNow()
                .build();

        scheduler.getListenerManager().addJobListener(
                new MyJobListener(), KeyMatcher.keyEquals(jobDetail.getKey())
        );

        scheduler.getListenerManager().addTriggerListener(
                new MyTriggerListener(),
                AndMatcher.and(
                        KeyMatcher.keyEquals(trigger.getKey()),
                        GroupMatcher.groupEquals(Key.DEFAULT_GROUP)
                )
        );

        scheduler.scheduleJob(jobDetail, trigger);

Matcher

请添加图片描述

JobDetail jobDetail = JobBuilder.newJob(MySpringQuartzJob.class)

.withIdentity("job-2")

.requestRecovery() // 仅对jdbc持久化方式生效,如果任务中途挂掉,比如宕机了,下次重启服务器自动执行

.build();

Trigger trigger = TriggerBuilder.newTrigger()

.withIdentity("trigger-2")

.withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(30))

.startNow()

.modifiedByCalendar("holidays")

.withPriority(5)

.build();

scheduler.getListenerManager().addJobListener(

new MyJobListener(), KeyMatcher.keyEquals(jobDetail.getKey())

);

scheduler.getListenerManager().addTriggerListener(

new MyTriggerListener(),

AndMatcher.and(

KeyMatcher.keyEquals(trigger.getKey()),

GroupMatcher.groupEquals(Key.DEFAULT\_GROUP)

)

);

scheduler.scheduleJob(jobDetail, trigger);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值