Clojure 当今天与星期几匹配时,Quartz会忽略每日计划的时间

Clojure 当今天与星期几匹配时,Quartz会忽略每日计划的时间,clojure,quartz-scheduler,quartzite,Clojure,Quartz Scheduler,Quartzite,我试着在一周中的某些日子将每天的工作安排在同一时间,例如每周二上午9点或周二和周三上午10点 当工作日与今天的工作日匹配时,Quartz的点火时间出乎意料。按预期在上午9点触发,除非今天的工作日与计划日一致,在这种情况下,触发器会立即触发,例如,如果今天是星期二,触发器是星期二,而不是下周上午9点触发,则触发器将立即触发。石英为什么会这样做 我发现防止这种行为的唯一方法是将触发器的开始时间覆盖到第二天,但如果当前时间早于触发器时间,则它将错过当前时间的触发器,这使得我将Quartz用作每日计划程

我试着在一周中的某些日子将每天的工作安排在同一时间,例如每周二上午9点或周二和周三上午10点

当工作日与今天的工作日匹配时,Quartz的点火时间出乎意料。按预期在上午9点触发,除非今天的工作日与计划日一致,在这种情况下,触发器会立即触发,例如,如果今天是星期二,触发器是星期二,而不是下周上午9点触发,则触发器将立即触发。石英为什么会这样做

我发现防止这种行为的唯一方法是将触发器的开始时间覆盖到第二天,但如果当前时间早于触发器时间,则它将错过当前时间的触发器,这使得我将Quartz用作每日计划程序毫无意义

注:我使用的是石英通孔,石英上的一层薄薄的Clojure层,但意外的行为似乎与石英岩无关

以下是我的触发器构建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)))))

我认为这可能是一种您可以处理quartz称之为“失火处理”的情况:


想象一下,如果进程在您计划的时间内停止/停止,您可能希望它继续运行,并在进程恢复时启动。但我不清楚您如何区分这种情况(死亡过程)和您描述的情况(初始计划是在代码部署的当天早些时候?第一次运行?)。

我认为这可能是一种您可以处理quartz称之为“失火处理”的情况:


想象一下,如果进程在您计划的时间内停止/停止,您可能希望它继续运行,并在进程恢复时启动。但我不清楚您如何区分这种情况(即将死亡的过程)和您描述的情况(初始调度是在代码部署的早期?第一次运行?)

你现在可以开始启动,在这种情况下,如果它已经通过当前时间,它将不考虑触发器,但是如果它在同一天和时间还未被勾选,它将考虑它。由于您没有超过开始日期时间,它认为它在同一天失火,并立即开火。这将解决您的问题

(t/build
  (t/start-now)
  (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)))))

现在可以开始了,在这种情况下,如果它已经通过当前时间,它将不考虑触发器,但是如果它在同一天和时间还未开始,它会考虑它。由于您没有超过开始日期时间,它认为它在同一天失火,并立即开火。这将解决您的问题

(t/build
  (t/start-now)
  (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)))))