我正在考虑将Quartz与Atlas结合使用以进行定期服务。我有一个每天运行一次的程序(扫描我的邮箱以查找特定邮件)。如果有结果,我希望它在第二天再次运行。如果没有结果,作业应在 15 分钟内再次执行。原因是邮件并不总是准时到达。
如果您只是以固定的计划运行作业,例如每十五分钟一次,并且您的逻辑会跟踪上次成功检索日期,该怎么办?
然后,您的工作开始,它可以检查最后一个成功日期是今天,并且跳过邮箱扫描的逻辑。
如果您想要更复杂(更难跟踪)的版本,也始终可以安排新触发器。
- 运行失败后,安排新触发器在 DateTime.UtcNow.AddMinutes(15) 运行一次
- 成功运行后,只需安排一个触发器,开始日期为明天
您可以通过调度上下文从作业访问调度程序,以便进行触发器调度。如果您的服务器出现故障,您可能需要知道重新启动时是否已加载数据。这可能支持第一种更简单的方法。