美文网首页
quartz之SimpleTrigger

quartz之SimpleTrigger

作者: 不知不怪 | 来源:发表于2020-03-05 18:19 被阅读0次
    package com.gzz;
    
    import java.util.Date;
    
    import javax.annotation.PostConstruct;
    
    import org.quartz.JobBuilder;
    import org.quartz.JobDetail;
    import org.quartz.JobKey;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.impl.triggers.SimpleTriggerImpl;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    import com.gzz.common.quartz.TestJob;
    
    /**
     * @author https://www.jianshu.com/u/3bd57d5f1074
     * @date 2019-12-24 10:50:00
     */
    @SpringBootApplication
    public class Application {
    
        @Autowired
        private Scheduler scheduler;
    
        public static void main(String[] args) throws Exception {
            SpringApplication.run(Application.class, args);
        }
    
        @PostConstruct
        public void run() throws SchedulerException {
            JobKey jobKey = new JobKey("availableTopic", "robot");
            JobDetail job = JobBuilder.newJob(TestJob.class).withIdentity(jobKey).build();
            SimpleTriggerImpl trigger = new SimpleTriggerImpl();
            trigger.setName("SimpleTrigger+planName+planId");
            trigger.setStartTime(new Date());// 开始运行时间
            trigger.setRepeatInterval(1000);
            trigger.setRepeatCount(Integer.MAX_VALUE); // 运行次数
            trigger.setEndTime(new Date(new Date().getTime() + 3600));
            scheduler.scheduleJob(job, trigger);
        }
    }
    
    
    
    package com.gzz.common.quartz;
    
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    import org.springframework.scheduling.quartz.QuartzJobBean;
    import org.springframework.stereotype.Component;
    import lombok.extern.slf4j.Slf4j;
    
    @Slf4j
    @Component
    public class TestJob extends QuartzJobBean {
        @Override
        protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
            log.info("任务开始执行");
        }
    }
    
    

    以下为让job可以注入

    package com.gzz.config;
    
    import org.quartz.Scheduler;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.scheduling.quartz.SchedulerFactoryBean;
    
    /**
     * @类说明 任务调度器的配置
     * @author 高振中 MWW
     * @date 2019-02-28 09:44:27
     **/
    @Configuration
    public class SchedulerConfig {
        @Bean
        public SchedulerFactoryBean schedulerFactoryBean(JobFactory jobFactory) {
            // Spring提供SchedulerFactoryBean为Scheduler提供配置信息,并被Spring容器管理其生命周期
            SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
            // 设置自定义Job Factory,用于Spring管理Job bean
            schedulerFactoryBean.setJobFactory(jobFactory);
            return schedulerFactoryBean;
        }
    
        @Bean
        public Scheduler scheduler(SchedulerFactoryBean schedulerFactoryBean) {
            schedulerFactoryBean.setOverwriteExistingJobs(true);
            return schedulerFactoryBean.getScheduler();
        }
    }
    
    
    package com.gzz.config;
    
    import org.quartz.spi.TriggerFiredBundle;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
    import org.springframework.scheduling.quartz.AdaptableJobFactory;
    import org.springframework.stereotype.Component;
    
    @Component
    public class JobFactory extends AdaptableJobFactory {
        /**
         * AutowireCapableBeanFactory接口是BeanFactory的子类
         * -可以连接和填充那些生命周期不被Spring管理的已存在的bean实例
         */
        @Autowired
        private AutowireCapableBeanFactory factory;
    
        /**
         * -创建Job实例
         */
        @Override
        protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
            Object job = super.createJobInstance(bundle);// 实例化对象
            factory.autowireBean(job);// 进行注入(Spring管理该Bean)
            return job;// 返回对象
        }
    }
    
    

    相关文章

      网友评论

          本文标题:quartz之SimpleTrigger

          本文链接:https://www.haomeiwen.com/subject/dcccrhtx.html