繁体   English   中英

无需实例化hangfire服务器即可删除hangfire作业

[英]Remove a hangfire job without instantiating a hangfire server

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

运行测试的结果是出现了由第一个应用创建的重复作业,这是理想的。 但是,由于测试是集成的-它在生产数据库上运行,所以测试完成后,我想删除创建的重复作业。 我想在测试中进行删除。

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

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

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

我希望我对自己的解释足够清楚。

假设您使用ID创建了周期性工作,则可以按照文档页面上的说明执行RecurringJob.RemoveIfExists(“ id”): http : //docs.hangfire.io/en/latest/background-methods/performing-复发,参见tasks.html

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

可能有两种方法可以进行此设置。

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

要么

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM