zoukankan      html  css  js  c++  java
  • quartz开源作业调度框架的配置

    quartz开源作业调度框架的job服务实现,Quartz是一个完全由java编写的开源作业调度框架,使用时候需要创建一个实现org.quartz.Job接口的java类,Job接口包含唯一的方法:

      public void execute(JobExecutionContext context)throws JobExecutionException;

    1、Quartz-Job的quartz.properties配置文件说明,此文件在quartz的jar包有,可直接拿过来使用不过只有基本的几个配置 自己可根据需要进行扩充;另外如果项目中没有对该配置文件重写,则Quartz会加载自己jar包中的quartz.properties文件:

    #============================================================================
    # Configure Main Scheduler Properties  
    #============================================================================
    
    org.quartz.scheduler.skipUpdateCheck: true
    
    #============================================================================
    # Configure ThreadPool  
    #线程池的实现类(一般使用SimpleThreadPool即可满足几乎所有用户的需求)
    org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool  
    #============================================================================
    #线程池的实现类(一般使用SimpleThreadPool即可满足几乎所有用户的需求)  
    org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool  
    
    #指定线程数,至少为1(无默认值)(一般设置为1-100直接的整数合适)  
    org.quartz.threadPool.threadCount: 20  
    
    #设置线程的优先级(最大为java.lang.Thread.MAX_PRIORITY 10,最小为Thread.MIN_PRIORITY 1,默认为5)  
    org.quartz.threadPool.threadPriority: 10  
    
    
    
    #============================================================================
    # Configure JobStore  
    #============================================================================
    
    org.quartz.jobStore.misfireThreshold: 60000
    
    org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore
    
    #org.quartz.jobStore.class: org.quartz.impl.jdbcjobstore.JobStoreTX
    #org.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
    #org.quartz.jobStore.dataSource: myDS
    #org.quartz.dataSource.myQuarzDataSource.connectionProvider.class: com.alibaba.druid.support.quartz.DruidQuartzConnectionProvider
    #org.quartz.jobStore.tablePrefix: QRTZ_
    #org.quartz.jobStore.isClustered: false
    
    #============================================================================
    # Configure Datasources  
    #============================================================================
    
    #org.quartz.dataSource.myDS.driver: org.postgresql.Driver
    #org.quartz.dataSource.myDS.URL: jdbc:postgresql://localhost/dev
    #org.quartz.dataSource.myDS.user: jhouse
    #org.quartz.dataSource.myDS.password: 
    #org.quartz.dataSource.myDS.maxConnections: 5
    
    
    
    #============================================================================
    # Configure Plugins 
    #============================================================================
    
    org.quartz.plugin.jobInitializer.class: org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
    org.quartz.plugin.jobInitializer.fileNames: quartz_data.xml
    org.quartz.plugin.jobInitializer.failOnFileNotFound: false

    详细参数解释的quartz.properties文件:

    # Default Properties file for use by StdSchedulerFactory
    # to create a Quartz Scheduler Instance, if a different
    # properties file is not explicitly specified.
    #
    # ===========================================================================
    # Configure Main Scheduler Properties 调度器属性
    # ===========================================================================
    org.quartz.scheduler.instanceName: DefaultQuartzScheduler
    #org.quartz.scheduler.instanceid:AUTO
    org.quartz.scheduler.rmi.export: false
    org.quartz.scheduler.rmi.proxy: false
    org.quartz.scheduler.wrapJobExecutionInUserTransaction: false
    # ===========================================================================  
    # Configure ThreadPool 线程池属性  
    # ===========================================================================
    #线程池的实现类(一般使用SimpleThreadPool即可满足几乎所有用户的需求)
    org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
    #指定线程数,至少为1(无默认值)(一般设置为1-100直接的整数合适)
    org.quartz.threadPool.threadCount: 10
    #设置线程的优先级(最大为java.lang.Thread.MAX_PRIORITY 10,最小为Thread.MIN_PRIORITY 1,默认为5)
    org.quartz.threadPool.threadPriority: 5
    #设置SimpleThreadPool的一些属性
    #设置是否为守护线程
    #org.quartz.threadpool.makethreadsdaemons = false
    #org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true
    #org.quartz.threadpool.threadsinheritgroupofinitializingthread=false
    #线程前缀默认值是:[Scheduler Name]_Worker
    #org.quartz.threadpool.threadnameprefix=swhJobThead;
    # 配置全局监听(TriggerListener,JobListener) 则应用程序可以接收和执行 预定的事件通知
    # ===========================================================================
    # Configuring a Global TriggerListener 配置全局的Trigger监听器
    # MyTriggerListenerClass 类必须有一个无参数的构造函数,和 属性的set方法,目前2.2.x只支持原始数据类型的值(包括字符串)
    # ===========================================================================
    #org.quartz.triggerListener.NAME.class = com.swh.MyTriggerListenerClass
    #org.quartz.triggerListener.NAME.propName = propValue
    #org.quartz.triggerListener.NAME.prop2Name = prop2Value
    # ===========================================================================
    # Configuring a Global JobListener 配置全局的Job监听器
    # MyJobListenerClass 类必须有一个无参数的构造函数,和 属性的set方法,目前2.2.x只支持原始数据类型的值(包括字符串)
    # ===========================================================================
    #org.quartz.jobListener.NAME.class = com.swh.MyJobListenerClass
    #org.quartz.jobListener.NAME.propName = propValue
    #org.quartz.jobListener.NAME.prop2Name = prop2Value
    # ===========================================================================  
    # Configure JobStore 存储调度信息(工作,触发器和日历等)
    # ===========================================================================
    # 信息保存时间 默认值60秒
    org.quartz.jobStore.misfireThreshold: 60000
    #保存job和Trigger的状态信息到内存中的类
    org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore
    # ===========================================================================  
    # Configure SchedulerPlugins 插件属性 配置
    # ===========================================================================
    # 自定义插件  
    #org.quartz.plugin.NAME.class = com.swh.MyPluginClass
    #org.quartz.plugin.NAME.propName = propValue
    #org.quartz.plugin.NAME.prop2Name = prop2Value
    #配置trigger执行历史日志(可以看到类的文档和参数列表)
    org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingTriggerHistoryPlugin  
    org.quartz.plugin.triggHistory.triggerFiredMessage = Trigger {1}.{0} fired job {6}.{5} at: {4, date, HH:mm:ss MM/dd/yyyy}  
    org.quartz.plugin.triggHistory.triggerCompleteMessage = Trigger {1}.{0} completed firing job {6}.{5} at {4, date, HH:mm:ss MM/dd/yyyy} with resulting trigger instruction code: {9}  
    #配置job调度插件  quartz_jobs(jobs and triggers内容)的XML文档  
    #加载 Job 和 Trigger 信息的类   (1.8之前用:org.quartz.plugins.xml.JobInitializationPlugin)
    org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
    #指定存放调度器(Job 和 Trigger)信息的xml文件,默认是classpath下quartz_jobs.xml
    org.quartz.plugin.jobInitializer.fileNames = my_quartz_job2.xml  
    #org.quartz.plugin.jobInitializer.overWriteExistingJobs = false  
    org.quartz.plugin.jobInitializer.failOnFileNotFound = true  
    #自动扫描任务单并发现改动的时间间隔,单位为秒
    org.quartz.plugin.jobInitializer.scanInterval = 10
    #覆盖任务调度器中同名的jobDetail,避免只修改了CronExpression所造成的不能重新生效情况
    org.quartz.plugin.jobInitializer.wrapInUserTransaction = false
    # ===========================================================================  
    # Sample configuration of ShutdownHookPlugin  ShutdownHookPlugin插件的配置样例
    # ===========================================================================
    #org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin
    #org.quartz.plugin.shutdownhook.cleanShutdown = true
    #
    # Configure RMI Settings 远程服务调用配置
    #
    #如果你想quartz-scheduler出口本身通过RMI作为服务器,然后设置“出口”标志true(默认值为false)。
    #org.quartz.scheduler.rmi.export = false
    #主机上rmi注册表(默认值localhost)
    #org.quartz.scheduler.rmi.registryhost = localhost
    #注册监听端口号(默认值1099)
    #org.quartz.scheduler.rmi.registryport = 1099
    #创建rmi注册,false/never:如果你已经有一个在运行或不想进行创建注册
    # true/as_needed:第一次尝试使用现有的注册,然后再回来进行创建
    # always:先进行创建一个注册,然后再使用回来使用注册
    #org.quartz.scheduler.rmi.createregistry = never
    #Quartz Scheduler服务端端口,默认是随机分配RMI注册表
    #org.quartz.scheduler.rmi.serverport = 1098
    #true:链接远程服务调度(客户端),这个也要指定registryhost和registryport,默认为false
    # 如果export和proxy同时指定为true,则export的设置将被忽略
    
    #org.quartz.scheduler.rmi.proxy = false
    
    --------------------- 
    参考链接:https://blog.csdn.net/sanfye/article/details/49204307 
    #指定存放调度器(Job 和 Trigger)信息的xml文件:quartz_data.xml实例:
    <?xml version="1.0" encoding="UTF-8"?>
    <job-scheduling-data
        xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
        version="1.8">
    
        <!-- 建议保留 -->
        <pre-processing-commands>
            <delete-jobs-in-group>*</delete-jobs-in-group>  <!-- clear all jobs in scheduler -->
            <delete-triggers-in-group>*</delete-triggers-in-group> <!-- clear all triggers in scheduler -->
        </pre-processing-commands>
    
        <!-- 建议保留 -->
        <processing-directives>
            <!-- if there are any jobs/trigger in scheduler of same name (as in this 
                file), overwrite them -->
            <overwrite-existing-data>true</overwrite-existing-data>
            <!-- if there are any jobs/trigger in scheduler of same name (as in this 
                file), and over-write is false, ignore them rather then generating an error -->
            <ignore-duplicates>false</ignore-duplicates>
        </processing-directives>
    
        <schedule>    
    <!-- 超期短信移至历史表 (超过2小时未发送的短信)定时每天20:00执行--> <job> <name>ChangeToMessageCenterHistoryJob</name> <job-class>com.xxx.cscns.sms.ChangeToMessageCenterHistoryJob</job-class> </job> <trigger> <cron> <name>ChangeToMessageCenterHistoryJob</name> <job-name>ChangeToMessageCenterHistoryJob</job-name> <cron-expression>0 0 20 * * ?</cron-expression> </cron> </trigger> <!-- 每天给项目经理发送短信避免短信服务挂了 定时每天08:30执行--> <job> <name>SendToManagerJob</name> <job-class>com.xxx.cscns.sms.SendToManagerJob</job-class> </job> <trigger> <cron> <name>SendToManagerJob</name> <job-name>SendToManagerJob</job-name> <cron-expression>0 30 8 * * ?</cron-expression> </cron> </trigger> </schedule> </job-scheduling-data>
    <!-- 实时扫描短信数据表,没有发送的调用运营商给的接口推送,完成发送短信操作 -->
            <job>
                <name>ReceiveMessageJob</name>
                <job-class>com.xxx.cscns.sms.ReceiveMessageJob</job-class>
            </job>
    
            <trigger>
                <simple>
                    <name>ReceiveMessageJob</name>
                    <job-name>ReceiveMessageJob</job-name>
                    <repeat-count>-1</repeat-count>
                    <repeat-interval>1</repeat-interval>
                </simple>
            </trigger>

     其中 <repeat-count>-1</repeat-count> 表示无限次执行;<repeat-interval>1</repeat-interval>表示执行间隔为1毫秒,即实时执行;

     <cron-expression>0 30 8 * * ?</cron-expression>表示每天早上八点半执行一次;

     其中<job-class>标签配置的是服务实现类的全路径,<job-name>一般为服务实现类的类名;

  • 相关阅读:
    剑指offer-二维数组中的查找
    TF-IDF(term frequency–inverse document frequency)
    Java实现中文字符串的排序功能
    当前课程
    【R】资源整理
    CentOS相关
    【转】Setting up SDL Extension Libraries on MinGW
    【转】Setting up SDL Extension Libraries on Visual Studio 2010 Ultimate
    【转】Setting up SDL Extension Libraries on Code::Blocks 12.11
    【转】Setting up SDL Extension Libraries on Visual Studio 2019 Community
  • 原文地址:https://www.cnblogs.com/wmqiang/p/10536022.html
Copyright © 2011-2022 走看看