我正在使用hangFire通知用户他今天的会议。这是我的应用程序启动代码或其他定期运行的方法
TimeSpan timeSpan = DateTime.Now- notificationTime ;
BackgroundJob.Schedule(() => sendNotification(reminder.Meeting_Id), timeSpan);
问题是每当用户访问我的网站时,就会将新的计划项目添加到hangfire中。
如何设置Hangfire在特定时间内运行预定项目并为此日程安排提供唯一ID?
答案 0 :(得分:0)
你可以在某个特定时间而不是在延迟之后将某些事情排队,你只需要传入你希望将这个工作排队的时间:
String uniqueJobId = BackgroundJob.Schedule(() => Console.WriteLine("Task"), notificationTime);
Schedule方法还返回Job的String Id,以便您可以在以后引用它。
请记住,此时您的作业将被排队,这可能会导致等待它的执行,具体取决于您的队列状态以及服务器是否可以处理它。除了确保你有足够的容量来保持你的队列长度以外,你无能为力。