在不实例化 hangfire 服务器的情况下删除 hangfire 作业

Remove a hangfire job without instantiating a hangfire server

我有 2 个独立的应用程序。一个使用 HangFire 并安排一个重复的工作。另一个包含测试。测试是集成的,因此它们重用实际路径而不模拟任何东西。两个应用程序都可以访问同一个数据库

作为 运行 测试的结果,出现了一个由第一个应用程序创建的重复作业,这是可取的。然而,由于测试是集成的——它在生产数据库上是 运行,所以在测试完成后,我想删除创建的重复作业。我想在测试中处理删除。

我想知道我是否可以在第二个应用程序中配置 hangfire 类,这样我就可以删除第一个应用程序创建的重复作业。

如果我简单地将 hangfire 配置为在第二个应用程序中使用相同的 SQL 服务器,那么将实例化一个新的 HangFireServer,它将启动 "grabbing" 作业以执行。

我可以 运行 SQL 查询来删除作业,但我想避免这种情况。

希望我已经解释清楚了。

假设您使用 id 创建了循环作业,您只需执行 RecurringJob.RemoveIfExists("id"),如文档页面所述:http://docs.hangfire.io/en/latest/background-methods/performing-recurrent-tasks.html

在 Hangfire 中,您可以 Remove/Add 作业,无论是循环作业还是后台作业,只要您先填充 JobStorage。

可能有两种设置方法。

JobStorage.Current = new SqlServerStorage("Your ConnectionString");; 

GlobalConfiguration.Configuration.UseSqlServerStorage("Your ConnectionString");

然后您现在可以使用您的 RecurringJob.RemoveIfExists("id") 而无需实例化 Hangfire 服务器。假设您已经在其他应用程序中预先创建了 Hangfire Scheme。