Spring Boot 为使用 Quartz 调度程序提供了多种便利,包括 spring-boot-starter-quartz “Starter”。如果 Quartz 可用,则会自动配置调度程序(通过 SchedulerFactoryBean 抽象)。
以下类型的 Bean 会自动拾取并与调度程序关联:
JobDetail:定义一个特定的Job。 JobDetail 实例可以使用 JobBuilder API 构建。CalendarTrigger:定义何时触发特定作业。
默认情况下,使用内存中的 JobStore。但是,如果 DataSource bean 在您的应用程序中可用并且相应地配置了 spring.quartz.job-store-type 属性,则可以配置基于 JDBC 的存储。
使用
1 添加依赖
2 配置文件org.springframework.boot spring-boot-starter-quartzorg.springframework.boot spring-boot-starter-jdbcmysql mysql-connector-javacom.alibaba druid
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://xxx.xxx.xxx.xxx:3306/quartz?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull username: username password: password quartz: jdbc: # 自动生成quartz需要的表 initialize-schema: always #相关属性配置 properties: org: quartz: scheduler: # 调度器实例名称 instanceName: clusteredScheduler # 调度器实例ID自动生成 instanceId: AUTO jobStore: # 调度信息存储处理类 class: org.quartz.impl.jdbcjobstore.JobStoreTX # JDBC的驱动 driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate # quartz相关表的前缀 tablePrefix: QRTZ_ # 是否将JobDataMap中的属性转为字符串存储 useProperties: true threadPool: # 指定线程池实现类,对调度器提供固定大小的线程池 class: org.quartz.simpl.SimpleThreadPool # 设置并发线程数量 threadCount: 100 # 指定线程优先级 threadPriority: 5 # quartz任务存储类型:jdbc或memory job-store-type: jdbc3 添加config文件
@Configuration public class QuartzConfig { @Bean public JobDetail myJob1Detail() { return JobBuilder .newJob(TestJob1.class) .withIdentity("myJob1") .storeDurably() .build(); } @Bean public Trigger myJob1Trigger() { CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/3 * * * * ?"); return TriggerBuilder.newTrigger() .forJob(myJob1Detail()) .withIdentity("myJob1Trigger") .withSchedule(cronScheduleBuilder) .build(); } @Bean public JobDetail myJob2Detail() { return JobBuilder .newJob(TestJob2.class) .withIdentity("myJob2") .storeDurably() .build(); } @Bean public Trigger myJob2Trigger() { CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/3 * * * * ?"); return TriggerBuilder.newTrigger() .forJob(myJob2Detail()) .withIdentity("myJob2Trigger") .withSchedule(cronScheduleBuilder) .build(); } }4 添加执行逻辑的Job
public class TestJob1 implements Job { @Override public void execute(JobExecutionContext jobExecutionContext) { // .. } } public class TestJob2 extends QuartzJobBean { @Override protected void executeInternal(JobExecutionContext context) { // .. } }
通过这几步的配置就可以使用Spring Boot提供的Quartz Scheduler功能了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)