springboot2.x集成quartz定时任务实战

springboot2.x集成quartz实战

本章是基于springboot2.x版本下的开发环境

  1. 首先在项目的pom文件中引入springboot 官方集成 quartz的jar包

     <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-quartz</artifactId>
    </dependency> 
    
  2. 成功引入依赖后,就是配置生成SchedulerFactoryBean的相关配置信息,我们采用数据库的方式来保存我们的job,trigger等信息。相关配置信息如下:

    spring:
    quartz:
    #相关属性配置
       	properties:
          org:
            quartz:
              scheduler:
                instanceName: clusteredScheduler
                instanceId: AUTO
              jobStore:
                class: org.quartz.impl.jdbcjobstore.JobStoreTX
                driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
                tablePrefix: QRTZ_
                isClustered: true
                clusterCheckinInterval: 10000
                useProperties: false
              threadPool:
                class: org.quartz.simpl.SimpleThreadPool
                threadCount: 5
                threadPriority: 5
                threadsInheritContextClassLoaderOfInitializingThread: true
        #数据库方式
        job-store-type: jdbc
        overwrite-existing-jobs: true  #每次启动后都会覆盖数据之前的job信息,默认false,这时配置的cron expression 不会同步到数据库
    
  3. 配置信息配好,并且数据库表创建成功后(相关表可以到quartz官方下载)我们quartz的开发环境就已经成功完成了。接下来就是小伙伴们撸代码的时候了。。。

  4. 首先我们先创建一个job类,这个类看名字就知道是干活的,主要用来执行我们的具体的业务逻辑的

    public class MyJob extends QuartzJobBean {
        	    @Override
        	    protected void executeInternal(JobExecutionContext jobExecutionContext) throws  JobExecutionException {
        	        System.out.println("我开始干活啦");
        	    }
        }
    
  5. job的业务逻辑完成后,我们需要指定该job的执行时间,我们使用cron表达式。quartz提供触发器机制去绑定一个jobdetail,当当前时间符合我们配置的cron表达式时,该触发器就会被出发,并执行具体的job, 具体的创建方式如下:

     @Bean
    public JobDetail createMyJobDetail() {  
    	returnJobBuilder.newJob(MyJob.class).withIdentity("myJob").storeDurably()
    	.build();
    }
    @Bean
    public Trigger createMyJobTrigger() {
        return TriggerBuilder.newTrigger().forJob(createMyJobDetail()).withIdentity("myJob").
        withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?").
        withMisfireHandlingInstructionFireAndProceed()).build();
    }
    
  6. OK, 以上就是一个job的全部开发流程,当springboot启动时SchedulerFactoryBean会将我们创建的job和trigger注册到scheduler上。

    如果解决了小伙伴的问题,请点个赞吧!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值