2

我有一个非常复杂的 sql 脚本来清理我的数据库,并且会不时手动运行。脚本运行后,我必须立即开始一个经常性的挂火作业,该作业通常每天只执行一次。

为了不忘记运行脚本,我想直接从 sql 脚本触发执行。有没有一种简单的方法来修改一个hangfire 表来完成这个任务?

Hangfire核心版本为1.7.5

更新: 不幸的是,我没有找到任何包含重复作业的hangfire 表。因此,我想它们根本没有持久化。是否可以通过在 HangFire.Job 表中插入新行来运行作业?或者这是一个坏主意?

4

1 回答 1

1

很抱歉没有在 stackoverflow 上跟进这个问题。由于缺乏纯粹的hangfire解决方案,我终于在单独的“DatabaseState”表的帮助下实现了一些自定义逻辑。

我的 DatabaseState 表具有以下字段:DateOfDbUpdate(datetime) 和 HangfireExecuted(bool)。每当我运行复杂的 SQL 脚本时,我只需在表中插入一个带有当前时间和 HangfireExecuted = false 的新条目。

在代码中,我创建了一个重复的hangfire 作业,它每隔几秒检查一次DatabaseState 表中是否有HangfireExecuted == false 的新条目。如果它找到这样的条目,它将启动清理工作。

不幸的是,这不是一个非常干净和直接的解决方案。如果有人想出一个真正的hangfire解决方案,我会很高兴。

于 2021-05-20T07:44:43.823 回答