我正在使用Java的Quartz调度API。你能帮我使用cron表达式每25秒运行一次吗?它只是一个延迟。它不必总是在第0秒开始。例如,序列如下:0:00、0:25、0:50、1:15、1:40、2:05等,直到第5分钟序列再次从0秒开始。
谢谢。
我认为cron表达式不能做到这一点,但你可以使用其他方法
SimpleScheduleBuilder.repeatSecondlyForever( 25 )
由于300秒(5分钟)是25的倍数,因此它将自动重复。
SimpleTrigger
和指定repeatInterval
。CronTrigger trigger = newTrigger()
.withIdentity("trigger1", "group1")
.withSchedule(cronSchedule("0/20 * * * * ?"))
.build();
如果使用cron触发器来完成这个任务,唯一的方法太过复杂而且没有用处;你最好使用其他答案中提到的SimpleTrigger。不过,如果必须使用cron,你需要设置五个不同的cron触发器:
0/25 0/5 * * * *
15/25 1/5 * * * *
5/25 2/5 * * * *
20/25 3/5 * * * *
10/25 4/5 * * * *
*/25 * * * * *
- [维基百科] http://zh.wikipedia.org/wiki/Cron
- [Quartz教程] http://www.quartz-scheduler.org/docs/tutorial/TutorialLesson06_zh.html
对于Quartz,您不能有这样的时间表。
您可以做的一件事是安排一个包装作业每5秒运行一次,并且只在第五次执行时进行任何工作。
你可以使用Camel的Throttler调节频率,将作业安排为不断运行。
<route>
<from uri="jms:queue:TestQueue"/>
<!-- throttle 1 messages per 25 sec -->
<throttle timePeriodMillis="25000">
<constant>1</constant>
<to uri="bean:TestBean?method=testMethod"/>
</throttle>
</route>