Quartz学习(4)

来源:互联网 发布:如何卸载mysql数据库 编辑:程序博客网 时间:2024/06/05 00:30

Scheduler

调度器,将JobDtail与Trigger联系在了一起,当调度器开启的时候,且任务的时间一到,调度器程序就会负责执行预先定义的任务。Scheduler实例是通过SchedulerFactory工厂来创建的可以有两种方式来创建,DirectSchedulerFactoryStdSchedulerFactory
(一)DirectSchedulerFactory
DirectSchedulerFactory是一个org.quartz.SchedulerFactory的单例实现。 且其的配置方式为java代码,并不是很常用,所以略
(二)StdSchedulerFactory
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
    scheduler.scheduleJob(job, trigger);
start()为启动这个调度器,等待我们任务的触发时间,scheduleJob()将job与trigger联合了起来。返回的是此任务下第一次执行的时间,StdSchedulerFactory
默认使用的是
其jar包下的org.quartz下的quartz.properties配置文件作为其的配置参数,如果你在类路径下有一个quartz.properties配置文件,则其
会优先使用这个文件,在quartz.properties文件中,被分为了4个部分,分别为调度器属性,线程池属性,作业存储设置,插件配置
,大体为以下
  1. # Default Properties file for use by StdSchedulerFactory  
  2. # to create a Quartz Scheduler Instance, if a different  
  3. # properties file is not explicitly specified.  
  4. #  
  5. # ===========================================================================  
  6. # Configure Main Scheduler Properties 调度器属性  
  7. # ===========================================================================  
  8. org.quartz.scheduler.instanceName: DefaultQuartzScheduler  
  9. #org.quartz.scheduler.instanceid:AUTO  
  10. org.quartz.scheduler.rmi.export: false  
  11. org.quartz.scheduler.rmi.proxy: false  
  12. org.quartz.scheduler.wrapJobExecutionInUserTransaction: false  
  13. # ===========================================================================    
  14. # Configure ThreadPool 线程池属性    
  15. # ===========================================================================  
  16. #线程池的实现类(一般使用SimpleThreadPool即可满足几乎所有用户的需求)  
  17. org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool  
  18. #指定线程数,至少为1(无默认值)(一般设置为1-100直接的整数合适)  
  19. org.quartz.threadPool.threadCount: 10  
  20. #设置线程的优先级(最大为java.lang.Thread.MAX_PRIORITY 10,最小为Thread.MIN_PRIORITY 1,默认为5)  
  21. org.quartz.threadPool.threadPriority: 5  
  22. #设置SimpleThreadPool的一些属性  
  23. #设置是否为守护线程  
  24. #org.quartz.threadpool.makethreadsdaemons = false  
  25. #org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true  
  26. #org.quartz.threadpool.threadsinheritgroupofinitializingthread=false  
  27. #线程前缀默认值是:[Scheduler Name]_Worker  
  28. #org.quartz.threadpool.threadnameprefix=swhJobThead;  
  29. # 配置全局监听(TriggerListener,JobListener) 则应用程序可以接收和执行 预定的事件通知  
  30. # ===========================================================================  
  31. # Configuring a Global TriggerListener 配置全局的Trigger监听器  
  32. # MyTriggerListenerClass 类必须有一个无参数的构造函数,和 属性的set方法,目前2.2.x只支持原始数据
  33. #类型的值(包括字符串)  
  34. # ===========================================================================  
  35. #org.quartz.triggerListener.NAME.class = com.swh.MyTriggerListenerClass  
  36. #org.quartz.triggerListener.NAME.propName = propValue  
  37. #org.quartz.triggerListener.NAME.prop2Name = prop2Value  
  38. # ===========================================================================  
  39. # Configuring a Global JobListener 配置全局的Job监听器  
  40. # MyJobListenerClass 类必须有一个无参数的构造函数,和 属性的set方法,目前2.2.x只支持原始数据类型的值(包括字符串)  
  41. # ===========================================================================  
  42. #org.quartz.jobListener.NAME.class = com.swh.MyJobListenerClass  
  43. #org.quartz.jobListener.NAME.propName = propValue  
  44. #org.quartz.jobListener.NAME.prop2Name = prop2Value  
  45. # ===========================================================================    
  46. # Configure JobStore 存储调度信息(工作,触发器和日历等)  
  47. # ===========================================================================  
  48. # 信息保存时间 默认值60秒  
  49. org.quartz.jobStore.misfireThreshold: 60000  
  50. #保存job和Trigger的状态信息到内存中的类  
  51. org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore  
  52. # ===========================================================================    
  53. # Configure SchedulerPlugins 插件属性 配置  
  54. # ===========================================================================  
  55. # 自定义插件    
  56. #org.quartz.plugin.NAME.class = com.swh.MyPluginClass  
  57. #org.quartz.plugin.NAME.propName = propValue  
  58. #org.quartz.plugin.NAME.prop2Name = prop2Value  
  59. #配置trigger执行历史日志(可以看到类的文档和参数列表)  
  60. org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingTriggerHistoryPlugin    
  61. org.quartz.plugin.triggHistory.triggerFiredMessage = Trigger {1}.{0} fired job {6}.{5} at: {4, date, HH:mm:ss MM/dd/yyyy}    
  62. 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}    
  63. #配置job调度插件  quartz_jobs(jobs and triggers内容)的XML文档    
  64. #加载 Job 和 Trigger 信息的类   (1.8之前用:org.quartz.plugins.xml.JobInitializationPlugin)  
  65. org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin  
  66. #指定存放调度器(Job 和 Trigger)信息的xml文件,默认是classpath下quartz_jobs.xml  
  67. org.quartz.plugin.jobInitializer.fileNames = my_quartz_job2.xml    
  68. #org.quartz.plugin.jobInitializer.overWriteExistingJobs = false    
  69. org.quartz.plugin.jobInitializer.failOnFileNotFound = true    
  70. #自动扫描任务单并发现改动的时间间隔,单位为秒  
  71. org.quartz.plugin.jobInitializer.scanInterval = 10  
  72. #覆盖任务调度器中同名的jobDetail,避免只修改了CronExpression所造成的不能重新生效情况  
  73. org.quartz.plugin.jobInitializer.wrapInUserTransaction = false  
  74. # ===========================================================================    
  75. # Sample configuration of ShutdownHookPlugin  ShutdownHookPlugin插件的配置样例  
  76. # ===========================================================================  
  77. #org.quartz.plugin.shutdownhook.class = \org.quartz.plugins.management.ShutdownHookPlugin  
  78. #org.quartz.plugin.shutdownhook.cleanShutdown = true  
  79. #  
  80. # Configure RMI Settings 远程服务调用配置  
  81. #  
  82. #如果你想quartz-scheduler出口本身通过RMI作为服务器,然后设置“出口”标志true(默认值为false)。  
  83. #org.quartz.scheduler.rmi.export = false  
  84. #主机上rmi注册表(默认值localhost)  
  85. #org.quartz.scheduler.rmi.registryhost = localhost  
  86. #注册监听端口号(默认值1099)  
  87. #org.quartz.scheduler.rmi.registryport = 1099  
  88. #创建rmi注册,false/never:如果你已经有一个在运行或不想进行创建注册  
  89. true/as_needed:第一次尝试使用现有的注册,然后再回来进行创建  
  90. # always:先进行创建一个注册,然后再使用回来使用注册  
  91. #org.quartz.scheduler.rmi.createregistry = never  
  92. #Quartz Scheduler服务端端口,默认是随机分配RMI注册表  
  93. #org.quartz.scheduler.rmi.serverport = 1098  
  94. #true:链接远程服务调度(客户端),这个也要指定registryhost和registryport,默认为false  
  95. # 如果export和proxy同时指定为true,则export的设置将被忽略  
  96. #org.quartz.scheduler.rmi.proxy = false  

scheduler还拥有standby()与shutDown()方法,standby()是将调度器挂起,如果重新再使用Start的话,任务还是可以照常进行,
但是shutDown()方法就是直接关闭调度器,如果再次启动调度器的话,就会抛出org.quartz.SchedulerException,shutDown()也可
以传递参数(boolean),若为false的话,是将任务执行完毕之后才会关闭调度器,但是如果为true的话,和不传参数是一样的,直接
就关闭,并不会执行任务,isShutDown()判断调度器是否关闭。

如有不足,请批评指正。


原创粉丝点击