scehdule Quartz.net下次基于执行结果

时间:2013-10-18 11:26:18

标签: quartz-scheduler quartz.net atlas

我正在将Quartz与Atlas结合使用以获得预定服务。我有一个每天运行一次的程序(扫描我的邮箱以获取特定邮件)。如果有结果,我希望它在第二天再次运行。如果没有结果,作业应该再次执行,比方说15分钟。原因是因为邮件并不总是准时到达。

1 个答案:

答案 0 :(得分:1)

如果你只是按照固定的时间表运行工作,比如每15分钟运行一次并且你的逻辑跟踪上一次成功的检索日期怎么办?

然后你的工作开始,它可以检查上一个成功的日期是今天,只是跳过邮箱扫描的逻辑。

如果您想要更复杂(更难跟踪)的版本,也始终可以安排新的触发器。

  • 运行失败后,安排新触发器在DateTime.UtcNow.AddMinutes(15)
  • 运行一次
  • 成功运行后,只安排明天开始日期的触发器

您可以通过调度上下文从作业访问调度程序以进行触发器调度。如果服务器出现故障,您可能需要知道在重新启动时是否已经加载了数据。这可能会支持第一种更简单的方法。