我正在开发一个使用 Asp.net MVC 5 和 Web api 以及 SQL Server 的项目。我应该实现一个需要调度的功能。
我在这个系统中有一些用户,每个用户都可以注册订单,并且我将订单信息保存在数据库中。
问题:对于 2 分钟后在系统中注册的每个订单,我应该向其所有者发送消息并通知他订单状态。
注册后2分钟如何查看每个订单的状态?
我应该为每个已注册的订单安排一个任务吗? (每秒可能超过 500 个订单,所以我认为这不是一个好的解决方案)
我想要一个能够以良好性能处理此问题的解决方案。
最佳答案
您的最佳解决方案是 Hangfire
Hangfire 就是为了应对此类挑战而构建的。你有多少份工作其实并不重要。配置 Hangfire 后,您只需将方法传递到队列即可。您还可以使用 TimeSpan 延迟执行
BackgroundJob.Schedule(
() => Console.WriteLine("Delayed!"),
TimeSpan.FromMinutes(2));
您甚至可以链接作业,如果您的订单流程中有多个步骤,这非常方便:
BackgroundJob.Schedule(() => {
SomeProcessToComplete();
},TimeSpan.FromMinutes(2));
static void SomeProcessToComplete(){
//after code runs add another job to the queue
BackgroundJob.Schedule(
() => Console.WriteLine("Delayed!"),
TimeSpan.FromMinutes(2));
}
关于c# - Asp.net Mvc 和 Web api 中的调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46043050/