全新2.0版本 点我直达
非Spingboot的其它框架,请移步基础框架版quartz
- 基于quartz的二次集成
- 支持集群
- 支持其它web项目进行功能开发
- 动态控制定时任务启动、暂停、重启、删除、添加、修改
- 支持多数据库
- 支持自实现Scheduler、Job、Trigger监听,系统自动注册
- 支持自主选择Trigger类型,已支持CronTrigger、SimpleTrigger
- 支持一个Job对应多个Trigger,且可设置不同的Trigger类型
- 支持Job中Autowired Spring bean
- 支持JobData自动赋值给Job的成员变量(名称相同)
- 支持Job、Trigger同时携带JobData
注意:6以后的特性仅2.0.x及以上版本支持
1.0.x
- 引入依赖
- 修改jdbc.properties数据源配置
- 继承AbstractQuartzTask,实现自己的定时任务
- 功能开发
- 任务展示
- 调用接口控制任务
2.0.x
- 引入依赖
- 选择使用系统数据源、自主数据源
- 新建Job,且继承自DefaultQuartzJobBean
- Job中注入Service,实现自己的逻辑
- 配置到Scheduler中
sys:
quartz:
thread-pool:
thread-name-prefix: XbdThreadPoolTaskExecutor-
thread-priority: 5
daemon: false
thread-group-name: XbdThreadPoolTaskExecutorGroup
core-pool-size: 20
max-pool-size: 50
keep-alive-seconds: 60
queue-capacity: 100
allow-core-thread-timeout: false
waitfor-tasks-tocomplete-onshutdown: false
await-termination-seconds: 60 * 15
scheduler:
config-location: classpath:quartz.properties
scheduler-name: demo-scheduler
application-context-scheduler-contextkey: applicationContext
overwrite-existing-jobs: true
auto-startup: true
startup-delay: 10package com.xbd.quartz.config;
import com.xbd.quartz.AutowiredSpringBeanJobFactory;
import com.xbd.quartz.QuartzListenerRegister;
import com.xbd.quartz.handler.DefaultQuartzTaskHandler;
import org.quartz.Scheduler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
@Configuration
public class QuartzConfig {
@Autowired
private DataSource dataSource;
@Autowired
private PlatformTransactionManager transactionManager;
@Bean
public QuartzProperties quartzProperties() {
return new QuartzProperties();
}
@Bean
public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
threadPoolTaskExecutor.setCorePoolSize(quartzProperties.getThreadPool().getCorePoolSize());
threadPoolTaskExecutor.setMaxPoolSize(quartzProperties.getThreadPool().getMaxPoolSize());
threadPoolTaskExecutor.setQueueCapacity(quartzProperties.getThreadPool().getQueueCapacity());
return threadPoolTaskExecutor;
}
@Bean
public AutowiredSpringBeanJobFactory autowiredSpringBeanJobFactory() {
AutowiredSpringBeanJobFactory autowiredSpringBeanJobFactory = new AutowiredSpringBeanJobFactory();
return autowiredSpringBeanJobFactory;
}
@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
schedulerFactoryBean.setConfigLocation(quartzProperties().getScheduler().getConfigLocation());
// 此处设置数据源之后,会覆盖quartz.properties中的myDS数据源
// schedulerFactoryBean.setDataSource(dataSource);
schedulerFactoryBean.setJobFactory(autowiredSpringBeanJobFactory());
schedulerFactoryBean.setSchedulerName(quartzProperties().getScheduler().getSchedulerName());
schedulerFactoryBean.setTaskExecutor(threadPoolTaskExecutor());
schedulerFactoryBean.setTransactionManager(transactionManager);
schedulerFactoryBean.setApplicationContextSchedulerContextKey(quartzProperties().getScheduler().getApplicationContextSchedulerContextKey());
schedulerFactoryBean.setOverwriteExistingJobs(quartzProperties().getScheduler().isOverwriteExistingJobs());
schedulerFactoryBean.setAutoStartup(quartzProperties().getScheduler().isAutoStartup());
schedulerFactoryBean.setStartupDelay(quartzProperties().getScheduler().getStartupDelay());
return schedulerFactoryBean;
}
@Bean
public Scheduler scheduler() {
return schedulerFactoryBean().getObject();
}
@Bean
public QuartzListenerRegister quartzListenerRegister() {
QuartzListenerRegister quartzListenerRegister = new QuartzListenerRegister();
quartzListenerRegister.setScheduler(scheduler());
return quartzListenerRegister;
}
@Bean
public DefaultQuartzTaskHandler defaultQuartzTaskHandler() {
DefaultQuartzTaskHandler defaultQuartzTaskHandler = new DefaultQuartzTaskHandler();
defaultQuartzTaskHandler.setScheduler(scheduler());
return defaultQuartzTaskHandler;
}
}- QuartzTaskHandler 任务处理接口,其中有添加、修改、删除、暂停、重启等功能
- AbstractSchedulerListener Scheduler监听,可自行实现自己需要的Scheduler监听
- AbstractJobListener Job监听,可自行实现自己需要的Job监听
- AbstractTriggerListener Trigger监听,可自行实现自己需要的Trigger监听
quartz使用 Apache License 2.0 协议