【问题标题】:Quartz.Net - Every 3 weeks on Mon,Tue,WedQuartz.Net - 周一、周二、周三每 3 周
【发布时间】:2011-10-08 02:03:38
【问题描述】:

我被 Quartz.NET cron 触发器卡住了。 我能够实现我所有的场景,除了下面的场景。

  • 每 X 周的周一、周二、周三...

我做到了

0 31 15 ? * MON#2 *

每隔一个星期一触发一次。

它可以与0 31 15 ? * MON#2,TUE#2,WED#2 * 一起使用吗??

我尝试在 http://www.cronmaker.com 上对其进行测试,但它只显示星期一是即将到来的日期。 我唯一的要求是保持简单 - 即。不超过一个触发器。

【问题讨论】:

标签: c# scheduling quartz.net


【解决方案1】:

我同意布拉布斯特的观点。
我认为使用 Cron 表达式是不可能的。

Quartz.net 2.0 有一种称为 CalendarIntervalTrigger 的新型触发器,可用于管理不同的间隔单位。 你可以阅读更多here。

更新:

这是quartz.net 2.0 repository的链接。

【讨论】:

  • 我不断听到有关 Quartz.net 2.0 的消息,但我找不到任何源代码有关它的更多信息。我也听说过一些不好的事情(不稳定等)。
  • @Luke:我已经更新了我的答案。你可以在 GitHub 上找到quartz.net 的链接。我可能在 SO 上多次提到它不稳定。我知道 Marko Lahma - 其背后的人 - 最近在该项目上做了很多工作并解决了我遇到的所有问题。
  • 我决定试一试 v2。所以我目前正在检查它是否符合我的所有标准。但是,我看不到如何使用 CalendarItervalTrigger 在周二、周三、周五每 3 周触发一次。
【解决方案2】:

我使用了 Java Quartz 实现,假设它们相似,那么我认为不可能将您需要的内容表达为单个 CronTrigger。

在 Java 中,我们有 DateIntervalTrigger,但我认为这也不能在单个触发器中完成您需要的操作。不幸的是,由于无法在 API 本身中组合触发器,我想可以将触发器的复杂性表示为单个触发器。

【讨论】:

  • 其实是同一个团队
【解决方案3】:

一种可能的解决方案是将每周触发的触发器附加到一项工作,以确定是否已经过了 X 周并开始主要工作。

这可能违背您的“保持简单”的要求,但它会起作用。我必须实现类似的东西来确保触发特定的 Job 实例而不是全新的实例。

您可能想查看this question,因为它的要求几乎相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 2018-11-07
    • 2015-01-29
    • 1970-01-01
    • 2011-06-19
    • 2015-09-24
    相关资源
    最近更新 更多