0

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

4

1 回答 1

1

如果您只是按照固定的时间表运行作业,比如每十五分钟一次,并且您的逻辑会跟踪最后一次成功检索的日期,该怎么办?

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

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

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

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

于 2013-10-20T10:29:15.487 回答