首页 > 解决方案 > 如何为自动调度hangfire作业添加观察者?

问题描述

注意:作业是 Hangfire 作业。

我有 5 个不同的任务可以执行。

它们都可以在一项工作中一起执行(相同的日期和时间),也可以在不同的日期和时间单独执行。

让我们来看看这个场景。

任务名称:日期和时间方式

A - 2021 年 5 月 5 日上午 10 点

B - 2021 年 6 月 5 日上午 10 点

C - 2021 年 6 月 5 日上午 10 点

D - 2021 年 7 月 5 日上午 10 点

E - 2021 年 10 月 6 日上午 10 点

我选择在给定时间在自动化中执行这些任务。

注意:这是一项重复性工作,这意味着所有这些任务都应在该日期的每个月执行。

我正在为所有这些任务安排一个工作。

工作名称:自动化 - 根据第一个任务 A 时间在 2021 年 5 月 5 日上午 10 点醒来

作业唤醒,开始执行任务A,完成任务A的执行。将相同的作业(名称:自动化)重新安排到任务B 的时间,即 2021 年 6 月 5 日上午 10 点。

工作名称:自动化 - 2021 年 6 月 5 日上午 10 点根据任务 B 时间醒来

作业唤醒,开始执行任务B,完成任务B的执行。将相同的作业(名称:自动化)重新安排到任务C的时间,即 2021 年 6 月 5 日上午 10 点。

现在这很好,但是

如果您注意到,任务E 的开始日期(2021 年 10 月 6 日上午 10 点)在下个月任务A 的开始日期(2021 年 5 月 6 日上午 10 点)之后。

根据这个算法,我不能重新安排任务 A 的工作,除非我完成所有任务直到 E。

PS:

出于可维护性的原因,我无法为所有这些任务创建不同的作业,因为用户可以删除、暂停、恢复、重新运行他们配置的任何自动化。(当任务更多并且每个人都有不同的工作时,它会变得混乱)。

我从我的同事那里得到建议,我们可以添加一个观察者服务,该服务将每晚检查我是否有任何约会即将到来,但该工作尚未安排在 Hangfire 中,如果是,则该服务将安排。

尽管如此,我觉得这会给观察者服务增加太多负担,因为它负责检查所有帐户的工作。

欢迎任何建议!:)

标签: cronschedulehangfirerecurring

解决方案


推荐阅读