• 【Quartz】Spring Boot使用properties文件配置Quartz


    (1)在resource目录下新建quartz.properties文件

    #============================================================================
    # 基础配置
    #============================================================================
    org.quartz.scheduler.instanceName = JobScheduler
    org.quartz.scheduler.instanceId = AUTO
    org.quartz.scheduler.rmi.export = false
    org.quartz.scheduler.rmi.proxy = false
    org.quartz.scheduler.wrapJobExecutionInUserTransaction = false
    
    #============================================================================
    # 调度器线程池配置
    #============================================================================
    org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
    org.quartz.threadPool.threadCount = 20
    org.quartz.threadPool.threadPriority = 5
    org.quartz.jobStore.misfireThreshold = 60000
    
    #============================================================================
    # Configure JobStore 作业存储配置
    #============================================================================
    org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
    org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
    org.quartz.jobStore.useProperties = true
    org.quartz.jobStore.tablePrefix = QRTZ_
    org.quartz.jobStore.dataSource = qzDS
    
    org.quartz.jobStore.isClustered = true
    org.quartz.jobStore.clusterCheckinInterval = 15000
    
    #============================================================================
    # JDBC
    #============================================================================
    org.quartz.dataSource.qzDS.driver = com.mysql.jdbc.Driver
    org.quartz.dataSource.qzDS.URL = jdbc:mysql://localhost:3306/job_scheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    org.quartz.dataSource.qzDS.user = ****************
    org.quartz.dataSource.qzDS.password = **************
    org.quartz.dataSource.qzDS.maxConnections = 5
    org.quartz.dataSource.qzDS.validationQuery = select 0 from dual

    关于quartz配置的详情,参见官方文档

    (2) 写配置解析类

     1 import org.quartz.Scheduler;
     2 import org.quartz.ee.servlet.QuartzInitializerListener;
     3 import org.springframework.beans.factory.config.PropertiesFactoryBean;
     4 import org.springframework.context.annotation.Bean;
     5 import org.springframework.context.annotation.Configuration;
     6 import org.springframework.core.io.ClassPathResource;
     7 import org.springframework.scheduling.quartz.SchedulerFactoryBean;
     8 import org.wcc.crypt.Crypter;
     9 import org.wcc.crypt.CrypterFactory;
    10 
    11 import java.io.IOException;
    12 import java.util.Properties;
    13 
    14 @Configuration //类似xml中的<beans>标签,一般和@bean注解一起使用来配置一个Bean,让Spring来管理它的生命周期
    15 public class SchedulerConfig {
    16 
    17     @Bean(name="SchedulerFactory")
    18     public SchedulerFactoryBean schedulerFactoryBean() throws IOException {
    19         SchedulerFactoryBean factory = new SchedulerFactoryBean();
    20         factory.setQuartzProperties(quartzProperties());
    21         return factory;
    22     }
    23 
    24     /**
    25      * 加载Quartz配置
    26      *
    27      */
    28     @Bean
    29     public Properties quartzProperties() throws IOException {
    30         //使用Spring的PropertiesFactoryBean对属性配置文件进行管理
    31         PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
    32         propertiesFactoryBean.setLocation(new ClassPathResource("/quartz_config.properties"));
    33         propertiesFactoryBean.afterPropertiesSet();
    34 
    35         Properties properties = propertiesFactoryBean.getObject();
    36 
    37         // 账号密码解密
    38         Crypter crypter = CrypterFactory.getCrypter(CrypterFactory.AES_CBC);
    39         String user = properties.getProperty("org.quartz.dataSource.qzDS.user");
    40         if (user != null) {
    41             user = crypter.decrypt(user);
    42             properties.setProperty("org.quartz.dataSource.qzDS.user", user);
    43         }
    44         String password = properties.getProperty("org.quartz.dataSource.qzDS.password");
    45         if (password != null) {
    46             password = crypter.decrypt(password);
    47             properties.setProperty("org.quartz.dataSource.qzDS.password", password);
    48         }
    49 
    50         return properties;
    51     }
    52 
    53     /**
    54      * 初始化Quartz监听器,让Spring boot启动时初始化Quartz
    55      *
    56      */
    57     @Bean
    58     public QuartzInitializerListener executorListener() {
    59         return new QuartzInitializerListener();
    60     }
    61 
    62     /**
    63      * 通过SchedulerFactoryBean获取Scheduler的实例
    64      */
    65     @Bean(name="Scheduler")
    66     public Scheduler scheduler() throws IOException {
    67         return schedulerFactoryBean().getScheduler();
    68     }
    69 }
    SchedulerConfig.java
  • 相关阅读:
    前端开发面试题总结之——HTML
    HashMap的那些事
    抽象同步队列AQS(中)—— AQS的重点方法解析
    抽象同步队列AQS(上)—— 宏观上理解AQS
    synchronized原理详解
    volatile原理详解
    JMM模型详解
    计算机运行时内存&处理器CPU初步认知
    mysql-索引详解
    mysql-事务隔离机制&mvcc原理
  • 原文地址:https://www.cnblogs.com/xiongxx/p/9018196.html
Copyright © 2020-2023  润新知