日期:2014-05-19  浏览次数:20702 次

了解定时器quartz的大侠请帮忙!
现在有两个问题想问一下:1. 假如说同一时间触发了好几个job,那么如何设置这几个job的优先级,quartz_jobs.xml中代码如:
<job>
  <job-detail>
  <name>BillingProcessTimer</name>
  <group>checker</group>
  <job-class>cn.com.carsmart.ws.job.BillingProcessTimer</job-class>
  </job-detail>
  <trigger>
  <cron>
  <name>BillingProcessTimer</name>
  <group>checker</group>
  <job-name>BillingProcessTimer</job-name>
  <job-group>checker</job-group>
  <cron-expression>0 0/15 * * * ?</cron-expression>
  </cron>
  </trigger>
  </job>
quartz.properties中代码如:
org.quartz.scheduler.instanceName = BillingScheduler
#org.quartz.scheduler.instanceId = one
org.quartz.scheduler.instanceId = AUTO
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 1
org.quartz.threadPool.threadPriority = 4
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}
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileName = quartz_job.xml
org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin
org.quartz.plugin.shutdownhook.cleanShutdown = true;

2.有没有一个时间表达式可以实现,每小时执行一次(但排除每月1号 00:00---08:00)这样的表达式有吗,或者实现思路也可;谢谢,期待您的回复;

------解决方案--------------------
第一个问题:不清楚能不能直接在quartz-job的配置文里配置每个job的优先级,但是,你可以试下在具体实现job的代码里面设定当前线程的优先级。
第二个问题:把这个拆分成两个任务就可以啦,执行相同的job,只是cront一个设置为:
* * 9-23/1 1 * * ===> 每月1号,9-23点每搁一小时执行一次
一个设置为:* * */1 2-31 * * =====> 每月2-31号,每小时执行一次,不用担心没有30,31号的情况,没有31号就不执行