.net core 我们是否可以将HangFire配置为在不同的时间间隔安排每个用户的作业?
我们想让用户从UI中安排一项工作的时间范围从15分钟到23:59小时是可行的。不同的用户可以选择不同的时间段来运行他们的作业 例如:.net core 我们是否可以将HangFire配置为在不同的时间间隔安排每个用户的作业?,.net-core,scheduler,job-scheduling,hangfire,.net Core,Scheduler,Job Scheduling,Hangfire,我们想让用户从UI中安排一项工作的时间范围从15分钟到23:59小时是可行的。不同的用户可以选择不同的时间段来运行他们的作业 例如: 场景1:用户A希望安排作业每15分钟运行一次。 场景2:用户B希望安排作业每30分钟运行一次。 依此类推。假设这是一个循环作业,您可以将作业uid格式化为“Do Stuff()”。对于每个用户,使用AddOrUpdate()将任务注册到他们自己的cron计划中。假设这是一个定期作业,您可以将作业uid格式化为“Do Stuff()”。对于每个用户,使用AddOrU
场景1:用户A希望安排作业每15分钟运行一次。
场景2:用户B希望安排作业每30分钟运行一次。
依此类推。假设这是一个循环作业,您可以将作业uid格式化为“Do Stuff()”。对于每个用户,使用AddOrUpdate()将任务注册到他们自己的cron计划中。假设这是一个定期作业,您可以将作业uid格式化为“Do Stuff()”。对于每个用户,使用AddOrUpdate()将任务注册到他们自己的cron计划中。我将发布我自己问题的答案。 我使用了具有唯一标识符的定期作业(即,$“userid{job.userid}”),这是recurtive.AddOrUpdate()方法中的第一个参数,通过该方法将为每个用户创建单独的定期作业。请看下面的代码以理解。 现在,Hangfire将为4个不同频率的用户创建4个重复作业
List<Scheduler> list = new List<Scheduler>
{
new Scheduler { EveryXMinutes = 3, UserId = 1023028, On = true },
new Scheduler { EveryXMinutes = 5, UserId = 1023023, On = true },
new Scheduler { EveryXMinutes = 10, UserId = 1023025, On = true },
new Scheduler { EveryXMinutes = 15, UserId = 1023027, On = true }
};
foreach (var job in list)
{
if (job.On)
{
RecurringJob.AddOrUpdate($"userid_{job.UserId}", () => demoService.RunTaskDemo2(job.UserId), $"*/{job.EveryXMinutes} * * * *");
}
else
{
RecurringJob.RemoveIfExists($"userid_{job.UserId}");
}
}
我希望这就是解决方案。我将针对我自己的问题发布我的答案。 我使用了具有唯一标识符的定期作业(即,$“userid{job.userid}”),这是recurtive.AddOrUpdate()方法中的第一个参数,通过该方法将为每个用户创建单独的定期作业。请看下面的代码以理解。 现在,Hangfire将为4个不同频率的用户创建4个重复作业
List<Scheduler> list = new List<Scheduler>
{
new Scheduler { EveryXMinutes = 3, UserId = 1023028, On = true },
new Scheduler { EveryXMinutes = 5, UserId = 1023023, On = true },
new Scheduler { EveryXMinutes = 10, UserId = 1023025, On = true },
new Scheduler { EveryXMinutes = 15, UserId = 1023027, On = true }
};
foreach (var job in list)
{
if (job.On)
{
RecurringJob.AddOrUpdate($"userid_{job.UserId}", () => demoService.RunTaskDemo2(job.UserId), $"*/{job.EveryXMinutes} * * * *");
}
else
{
RecurringJob.RemoveIfExists($"userid_{job.UserId}");
}
}
我希望这就是解决办法