我试图在一周中的某些日子同时安排每日 Quartz 作业,例如每周二上午 9 点或周二和周三上午 10 点。
当工作日与今天的工作日匹配时,Quartz 的触发时间是出乎意料的。触发器按预期在上午 9 点触发,除非今天的工作日与计划日期匹配,在这种情况下触发器会立即触发,例如,如果今天是星期二并且触发器是针对星期二的,而不是在下周上午 9 点触发,触发器将立即触发。为什么石英会这样做?
我发现防止这种行为的唯一方法是将触发器的开始时间覆盖到第二天,但是如果当前时间在触发时间之前,它就会错过当天的触发器,这对我来说毫无意义使用Quartz 作为每日调度程序。
注意:我通过Quartzite使用 Quartz ,这是 Quartz 上的一个薄 Clojure 层,但意外行为似乎与 Quartzite 无关。
这是我的触发器构建 Clojure 代码:
(t/build
(t/with-identity (t/key "some-unique-id"))
(t/with-schedule (clojurewerkz.quartzite.schedule.daily-interval/schedule
(on-days-of-the-week (TreeSet. (vec (map #(Integer/valueOf %) [3 4])))) ; Tuesday and Wednesday
(starting-daily-at (daily-interval/time-of-day 09 00 00)))))