了解定时器quartz的大侠请帮忙!

maobing8090 2012-08-15 11:08:14
现在有两个问题想问一下: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)这样的表达式有吗,或者实现思路也可;谢谢,期待您的回复;
...全文
158 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
maobing8090 2012-08-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
第一个问题:不清楚能不能直接在quartz-job的配置文里配置每个job的优先级,但是,你可以试下在具体实现job的代码里面设定当前线程的优先级。
第二个问题:把这个拆分成两个任务就可以啦,执行相同的job,只是cront一个设置为:
* * 9-23/1 1 * * ===> 每月1号,9-23点每搁一小时执行一次
一个设置为:* * */1 2-31 * * =====> 每月2-31……
[/Quote]
好的,第二个问题思路不错;第一个问题还得好好研究一下;谢谢
weiman54 2012-08-15
  • 打赏
  • 举报
回复
第一个问题:不清楚能不能直接在quartz-job的配置文里配置每个job的优先级,但是,你可以试下在具体实现job的代码里面设定当前线程的优先级。
第二个问题:把这个拆分成两个任务就可以啦,执行相同的job,只是cront一个设置为:
* * 9-23/1 1 * * ===> 每月1号,9-23点每搁一小时执行一次
一个设置为:* * */1 2-31 * * =====> 每月2-31号,每小时执行一次,不用担心没有30,31号的情况,没有31号就不执行
maobing8090 2012-08-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
第一个问题尝试下能不能在代码里面设定线程优先级,Thread类里好像有个setPriority方法
第二个问题,如果没记错的话,quartz的cront格式是秒 分 时 日期 月份 星期
那么可以这样设置 * * 9-23/1 2-31 * *
意思就是除去一号之外,每天9点到23点,每一小时执行一次
[/Quote]

你好,第一个问题时碰到这种情况
<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>
<job>
<job-detail>
<name>AccountAllProcessTimer</name>
<group>checker</group>
<job-class>cn.com.carsmart.ws.job.AccountAllProcessTimer</job-class>
</job-detail>
<trigger>
<cron>
<name>AccountAllProcessTimer</name>
<group>checker</group>
<job-name>AccountAllProcessTimer</job-name>
<job-group>checker</job-group>
<cron-expression>0 0/30 * * * ?</cron-expression>
<!-- <cron-expression>0 0 2 1 * ?</cron-expression> -->
</cron>
</trigger>
</job>
我设定了线程池只能执行一个线程,当两个或者更多的job在同一时间点同时触发的时候,我想设定这个优先顺序,比如一定要先执行第一个,在执行第二个,基于上面设置的有没有设定优先级的方式;
第二个问题,有没有这样的表达式,每月1号9--23点 再加上每月2号--30或31号所有时间每小时执行一次?谢谢您的回复!
weiman54 2012-08-15
  • 打赏
  • 举报
回复
第一个问题尝试下能不能在代码里面设定线程优先级,Thread类里好像有个setPriority方法
第二个问题,如果没记错的话,quartz的cront格式是秒 分 时 日期 月份 星期
那么可以这样设置 * * 9-23/1 2-31 * *
意思就是除去一号之外,每天9点到23点,每一小时执行一次

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧