栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot整合quartz

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot整合quartz

springboot整合quartz

    
        org.springframework.boot
        spring-boot-starter-quartz
    
@Configuration
public class QuartzConfiguration {

    @Bean
    public SchedulerFactoryBean schedulerFactoryBean(){
        SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
        schedulerFactoryBean.setOverwriteExistingJobs(true);//覆盖已存在的任务
        //schedulerFactoryBean.setStartupDelay(60);//延时60秒   用于开机就启动的定时任务
        schedulerFactoryBean.setConfigLocation(new ClassPathResource("quartz.properties"));
        return schedulerFactoryBean;
    }

    // 创建schedule
    @Bean(name = "scheduler")
    public Scheduler scheduler() {
        Scheduler scheduler = schedulerFactoryBean().getScheduler();
        return scheduler;
    }

}

## 业务执行类

public class TaskJob extends QuartzJobBean {

    @Autowired
    private SynchService synchService;

    @Override
    protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
        Integer runTaskId = Integer.valueOf(String.valueOf(context.getMergedJobDataMap().get("taskId")));//获取参数
        System.out.println("开始同步数据任务!"+runTaskId);
        

    }
}




## 开始定时任务
private void start(String taskId){
        try {
            //排查是否已经启动
            JobKey jobKey = new JobKey("taskJob"+taskId);
            JobDetail jobDetail = scheduler.getJobDetail(jobKey);
            if (jobDetail != null){
                return;
            }
            //启动定时任务
            JobDetail taskJob = JobBuilder
                    .newJob(TaskJob.class)   //绑定job
                    .withIdentity("taskJob"+taskId) //绑定id
                    //.storeDurably()  持久化
                    .build();
            // 传入参数,在 TaskJob中使用
            taskJob.getJobDataMap().put("taskId", taskId);
            //触发器
            CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?");  //5秒定时
            Trigger trigger = TriggerBuilder.newTrigger()
                    .withIdentity("trigger"+taskId)
                    .startNow()
                    .withSchedule(scheduleBuilder)
                    .build();

            scheduler.scheduleJob(taskJob,trigger);
        } catch (SchedulerException e) {
            e.printStackTrace();
        }
    }


## 结束定时任务
    @RequestMapping(value = "e")
    public CommonReturn end(){
        String key = "taskJob123456";
        JobKey jobKey = new JobKey(key);

        try {
            //通过id回去job实例
            JobDetail jobDetail = scheduler.getJobDetail(jobKey);

            if (jobDetail == null){
                return null;
            }
            scheduler.deleteJob(jobKey);
        } catch (SchedulerException e) {
            e.printStackTrace();
        }


        return CommonReturn.createSuccess();
    }



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/322176.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号