在不实例化 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。
我有 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。