使用quartz搭建调度中心
来源:互联网 发布:淘宝配眼镜靠谱吗 知乎 编辑:程序博客网 时间:2024/06/06 00:46
###quartz介绍:
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 2.3.0
##思路
将quartz集成进spring boot,并且提供一下内容:
配置
样例作业和触发器
##实现
###1.配置
引入maven依赖(这里的quartz使用的是2.2.3)
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId></dependency><dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>${quartz.version}</version></dependency>
编写AutowiringSpringBeanJobFactory类
public final class AutowiringSpringBeanJobFactory extends SpringBeanJobFactory implements ApplicationContextAware { /** * 描述 : beanFactory */ private AutowireCapableBeanFactory beanFactory; @Override public void setApplicationContext(final ApplicationContext context) { beanFactory = context.getAutowireCapableBeanFactory(); } @Override protected Object createJobInstance(final TriggerFiredBundle bundle) throws Exception { final Object job = super.createJobInstance(bundle); beanFactory.autowireBean(job); return job; }}
编写SchedulerConfig类
@Configuration@ConfigurationProperties(prefix = "com.egridcloud.scheduler.config")@Validatedpublic class SchedulerConfig {..........}
编写SchedulerConfig类-属性
//是否记录日志 @NotNull private Boolean logFlag = true; //是否记录详细日志 @NotNull private Boolean logDetailFlag = false; /是否自动启动 @NotNull private Boolean autoStartup = true; //是否覆盖已经存在的jobs @NotNull private Boolean overwriteExistingJobs = true; //延迟启动秒数 @NotNull private Integer startupDelay = 0; /Job接受applicationContext的成员变量名 @NotNull private String applicationContextSchedulerContextKey = "applicationContext"; //quartz配置文件地址 @NotNull private String quartzPropertiesPath = "def_quartz.properties";
编写SchedulerConfig类-编写bean
@Bean public JobFactory jobFactory(ApplicationContext applicationContext) { AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory(); jobFactory.setApplicationContext(applicationContext); return jobFactory; } @Bean public Properties quartzProperties() throws IOException { PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean(); propertiesFactoryBean.setLocation(new ClassPathResource(getQuartzPropertiesPath())); propertiesFactoryBean.afterPropertiesSet(); return propertiesFactoryBean.getObject(); } @Bean("clusterQuartzScheduler") public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource, JobFactory jobFactory, Properties quartzProperties) throws IOException { //实例化 SchedulerFactoryBean factory = new SchedulerFactoryBean(); factory.setDataSource(dataSource); factory.setJobFactory(jobFactory); //属性设置 factory.setQuartzProperties(quartzProperties); factory.setOverwriteExistingJobs(getOverwriteExistingJobs()); factory.setAutoStartup(getAutoStartup()); factory.setStartupDelay(getStartupDelay()); factory.setApplicationContextSchedulerContextKey(getApplicationContextSchedulerContextKey()); //返回 return factory; }
编写def_quartz.properties配置文件
#Configure schedulerorg.quartz.scheduler.instanceName=clusterQuartzSchedulerorg.quartz.scheduler.instanceId=AUTOorg.quartz.scheduler.skipUpdateCheck=true#Configure ThreadPoolorg.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPoolorg.quartz.threadPool.threadCount=5org.quartz.threadPool.threadPriority=5#Configure JobStore and Clusterorg.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTXorg.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegateorg.quartz.jobStore.useProperties=trueorg.quartz.jobStore.tablePrefix=QRTZ_org.quartz.jobStore.isClustered=trueorg.quartz.jobStore.clusterCheckinInterval=20000org.quartz.jobStore.misfireThreshold=60000
执行数据库脚本,以及数据库配置(按需,我这里选择的是h2)
tables_h2.sql###########################################################DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)########################################################spring.datasource.url=jdbc:h2:file:D:/develop/d2_db/testdb
##结束
阅读全文
0 0
- 使用quartz搭建调度中心
- 使用activemq 和 quartz构建简易版企业调度中心
- 任务调度中心(quartz+Appdomain)
- 使用Quartz调度器
- 使用Quartz调度器
- 使用Quartz调度任务
- Quartz调度器的使用
- 使用quartz实现作业调度
- quartz计划调度使用心得
- Quartz任务调度基本使用
- Quartz任务调度基本使用
- Quartz任务调度基本使用
- Quartz任务调度基本使用
- 使用quartz进行任务调度
- 使用Quartz实现任务调度
- 使用Quartz实现任务调度
- Quartz任务调度基本使用
- 使用Quartz.NET搭建.net平台下的时间调度系统
- jQuery事件绑定和JavaScript原生事件绑定的区别
- 当你碰到javax.el.PropertyNotFoundException: Property xx not found on的时候
- 1254:n-1位数
- scrollview不置顶
- 微信小程序各类型的自定义组件篇
- 使用quartz搭建调度中心
- android 控件背景添加圆角
- 普通代码块,静态代码块,构造代码块的区别
- poj3087 Shuffle'm Up
- Python+django建站入门篇(2):素数判断
- android仿微信识别相册中二维码图片信息
- 实现isNum()函数判定一个字符串是否属于整数、浮点数或复数
- 菜鸟springboot学习之旅二
- 关于linux c的CGI cookie配置