springboot整合quartz

springboot整合quartz

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-quartz</artifactId>
    </dependency>
@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();
    }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值