Clojure-每周二安排一项工作
我正在使用,我需要安排每周二早上(比如上午10点)的工作 我有这项工作的代码,但我不知道如何安排Clojure-每周二安排一项工作,clojure,quartzite,Clojure,Quartzite,我正在使用,我需要安排每周二早上(比如上午10点)的工作 我有这项工作的代码,但我不知道如何安排 我应该使用每日还是日历调度程序 我应该(如何)使用 编辑:这是我到目前为止所拥有的,但它不起作用(见评论) Edit2: 使用每日间隔计划每日间隔计划使其变得简单 如要定义明细表,请执行以下操作: “星期一至星期五,9日至17日” “每个周末凌晨3点” “每周五中午” “每天13:45” 每周四每小时,但不迟于15:00,总计不超过400次 我的案例与文档中突出显示的案例非常相似,但我找不到
- 我应该使用
还是每日
调度程序日历
- 我应该(如何)使用
- “星期一至星期五,9日至17日”
- “每个周末凌晨3点”
- “每周五中午”
- “每天13:45”
- 每周四每小时,但不迟于15:00,总计不超过400次
我的案例与文档中突出显示的案例非常相似,但我找不到如何处理每日日程安排。一个可行的选择是使用cron触发器[1][2][3]。文档[1]中的示例代码-
(ns my.service
(:require [clojurewerkz.quartzite.scheduler :as qs]
[clojurewerkz.quartzite.triggers :as t]
[clojurewerkz.quartzite.jobs :as j]
[clojurewerkz.quartzite.jobs :refer [defjob]]
[clojurewerkz.quartzite.schedule.cron :refer [schedule cron-schedule]]))
(defjob NoOpJob
[ctx]
(comment "Does nothing"))
(defn -main
[& m]
(let [s (-> (qs/initialize) qs/start)
job (j/build
(j/of-type NoOpJob)
(j/with-identity (j/key "jobs.noop.1")))
trigger (t/build
(t/with-identity (t/key "triggers.1"))
(t/start-now)
(t/with-schedule (schedule
(cron-schedule "0 0 15 ? * 5"))))]
(qs/schedule s job trigger)))
Cron调度使用调度它的机器的本地时区。类似于010?*星期二
根据当地时间,描述了每周二上午10点。如果时间需要是某个特定的UTC时间,那么更好的选择是预先计算相应的本地时间,并在cron触发器描述中使用该时间。或者只是将机器配置为使用UTC时区
[1] -
[2] -[死亡]
[3] -
[4] -可能替代现在的2号死链接-您是否尝试过cron触发器。一些
010?*星期二
应描述每周二上午10点。石英岩博士链接-@AmithGeorge我正在尝试。它看起来很管用。但是我不知道如何测试它,我得到了一个Java.util.Date
实例,它似乎需要两个小时(我是GMT+2,也许这就是为什么?)。谢谢你的评论。@AmithGeorge也是,这可能是一个答案。正如我在之前的评论中所说,我还希望能够检查它是否有效。Cron在当地时间工作。调度作业的clojure代码将在执行作业的同一台机器上运行。只要该机器上的时间是周二上午10点,作业就会被触发。如果您需要它在UTC星期二上午10点运行,您可以选择让机器处于UTC时区,或手动计算适当的本地时间,即在安排时间之前星期二下午12点。。。我希望这能解释它,因为我还没有真正理解问题所在。@AmithGeorge如果你想把它作为一个答案,我会接受它。你介意展示一下如何在不使用cron语法的情况下做到这一点吗?我早就忘了2号链接应该指向什么,添加了第四个链接来解释cron触发器。
(ns my.service
(:require [clojurewerkz.quartzite.scheduler :as qs]
[clojurewerkz.quartzite.triggers :as t]
[clojurewerkz.quartzite.jobs :as j]
[clojurewerkz.quartzite.jobs :refer [defjob]]
[clojurewerkz.quartzite.schedule.cron :refer [schedule cron-schedule]]))
(defjob NoOpJob
[ctx]
(comment "Does nothing"))
(defn -main
[& m]
(let [s (-> (qs/initialize) qs/start)
job (j/build
(j/of-type NoOpJob)
(j/with-identity (j/key "jobs.noop.1")))
trigger (t/build
(t/with-identity (t/key "triggers.1"))
(t/start-now)
(t/with-schedule (schedule
(cron-schedule "0 0 15 ? * 5"))))]
(qs/schedule s job trigger)))