Hangfire和Asp.Net Core的周期性工作

Cie*_*eja 5 .net c# asp.net-mvc hangfire asp.net-core

我有一些想做经常性工作的方法。

我知道我可以在我的Startup.cs中使用hangfire,例如:

RecurringJob.AddOrUpdate(() => Console.WriteLine("I'm a recurring job"), Cron.Minutely);
Run Code Online (Sandbox Code Playgroud)

但是问题是我如何在这里使用我的服务?我应该在这里(依赖注入吗?)还是在其他地方使用?

也许我应该在appsettings.json中添加一些cron值?

Cal*_*alC 6

你的意思是这样吗?

RecurringJob.AddOrUpdate<IAlertService>(x => 
    x.SendAlerts(emailSettings, link), Cron.MinuteInterval(1));
Run Code Online (Sandbox Code Playgroud)


小智 -8

我认为 Hangfire 的缺点是设置起来很复杂。它需要一些额外的表来设置才能工作。我希望您在数据库中为其创建了表。请参阅如何获取定期作业。- HangFire 定期任务数据。我觉得它非常适合排队作业或后台任务,但对于重复性作业,我建议使用Quartz.net。它不需要这样的设置并且非常容易集成。到目前为止没有任何问题,并且它有良好的 CRON 支持。示例 - https://www.mikesdotnetting.com/article/254/scheduled-tasks-in-asp-net-with-quartz-net