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

本文关键字:hangfire 情况下 删除 作业 服务器 实例化 | 更新日期: 2023-09-27 17:55:57

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

运行测试后,将显示由第一个应用创建的定期作业,这是可取的。但是,由于测试是集成的 - 它在生产数据库上运行,因此在测试完成后,我想删除创建的重复作业。我想在测试中处理删除。

想知道我是否可以以某种方式在第二个应用程序中配置hangfire类,这将允许我删除由第一个应用程序创建的重复性作业。

如果我只是在第二个应用程序中将hangfire配置为使用相同的SQL服务器,那么将实例化一个新的HangFireServer,它将开始"抓取"作业以执行。

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

我希望我解释得足够清楚。

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

在 Hangfire 中,您可以删除/添加作业,无论是重复作业还是后台作业,只要您先填充 JobStorage 即可。

可能有两种方法可以设置它。

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

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

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

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