如何在Quartz调度程序中每25秒运行一次?

时间:2011-06-06 23:14:47

标签: java quartz-scheduler cronexpression

我正在使用Quartz Scheduling API for Java。你能帮我用cron-expression每25秒运行一次吗?这只是一个延迟。它不必始终在第二个0开始。例如,序列是这样的:0:00,0:25,0:50,1:15,1:40,2:05等等到第5分钟时序列在第二个0开始。 谢谢。

7 个答案:

答案 0 :(得分:15)

我不认为cron表达式会允许你这样做,但你可以使用

SimpleScheduleBuilder.repeatSecondlyForever( 25 )

因为300(5分钟)是25的倍数,它会自动重复。

答案 1 :(得分:9)

如果您希望定期触发作业,则可以使用指定了SimpleTrigger的Quartz repeatInterval

答案 2 :(得分:8)

使用 Quartz 2.1.5 ,这将有所帮助:

LVM_INSERTITEM

答案 3 :(得分:6)

使用cron触发器执行此操作的唯一方法是如此复杂以至于无用;你从其他答案中使用SimpleTrigger会好得多。然而,如果必须是cron,则需要设置五个不同的cron触发器:

 0/25 0/5 * * * *
15/25 1/5 * * * *
 5/25 2/5 * * * *
20/25 3/5 * * * *
10/25 4/5 * * * *

第一个触发器在0:00:25,0:00:50触发;然后第二个触发器在0:01:15和0:01:40触发;第三次是0:02:05,0:02:30,0:02:55;第四次是0:03:20,0:03:45;最后是0:04:10和0:04:35的第五个。然后第一个触发器在0:05:00再次接管,等等。

这只能起作用,因为25秒均匀分为5分钟(而后者均匀分成一小时)。如果你想要每 23 秒?算了吧!

答案 4 :(得分:3)

答案 5 :(得分:0)

对于石英,你不能有这样的时间表。

您可以做的一件事是安排一个包装器作业每5秒运行一次,并且每五次执行只执行任何工作。

答案 6 :(得分:0)

您可以安排作业持续运行,但使用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>