17

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

4

7 回答 7

16

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

SimpleScheduleBuilder.repeatSecondlyForever( 25 )

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

于 2011-06-07T18:56:17.810 回答
10

如果您希望作业定期触发,那么您可以使用指定的SimpleTriggerQuartz repeatInterval

于 2013-03-18T14:16:53.823 回答
8

使用Quartz 2.1.5这将有助于:

CronTrigger trigger = newTrigger()
    .withIdentity("trigger1", "group1")
    .withSchedule(cronSchedule("0/20 * * * * ?"))
    .build();
于 2016-02-05T14:09:05.383 回答
7

使用 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秒一次?忘掉它!

于 2016-02-26T20:50:48.710 回答
3
*/25 * * * * *


- [wiki] http://en.wikipedia.org/wiki/Cron
- [quartz 教程] http://www.quartz-scheduler.org/docs/tutorial/TutorialLesson06.html

于 2011-06-06T23:29:39.193 回答
0

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

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

于 2011-06-07T00:06:42.013 回答
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>
于 2016-12-01T18:00:34.300 回答