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>一般为服务实现类的类名;

  • 相关阅读:
    面向对象的静态属性和静态方法
    面向对象魔术方法及类的自动加载
    面向对象
    mysql cmd 创表查表练习
    创建表 查询表以及添加数据
    windows cmd命令
    4.20 mysq数据库 创建表
    cmd控制数据库初步了解
    Jquery初步了解
    故宫博物院项目 JS功能整理
  • 原文地址:https://www.cnblogs.com/wmqiang/p/10536022.html
Copyright © 2011-2022 走看看