我已经实现了在ASP.NET下运行的几种不同类型的后台工作程序,但想知道推荐/最佳实践方法可能是什么.
在数据存储(在这种情况下是mongo db)中,我有一个我需要处理的操作队列.
队列将根据ASP.NET MVC应用程序中的某些操作而增长.
我想启动一个后台线程/工作线程来连续处理这些排队的项目.
是否像在应用程序的启动事件中启动后台工作程序一样简单,还是应该在计时器上完成?
提前致谢
SAM
我有一个 ASP.NET 网站,其中包含许多长时间运行(5 分钟到 2 小时)的用户启动的任务。我希望每个用户都能够看到自己作业的进度,并且能够关闭浏览器并稍后返回。
当前的计划是在每个作业启动时将其存储在数据库中,并将消息发布到 RabbitMQ 队列,Windows 服务将接收该消息并开始处理该作业。
但是,我不确定将进度信息从服务传递回网络服务器的最佳方法?我看到两个选择:
我倾向于第二种选择,因为我真的不想通过定期轮询/写入进度信息来增加数据库的更多开销。然而,有很多关于使用 RabbitMQ(作为消费者)的警告- 因为我没有发送重要消息(如果进度消息没有被处理也没关系),我想知道这是否重要?这并不是说困难(著名的遗言)。
这个选项听起来合理吗?还有更好的选择吗?
architecture asp.net windows-services rabbitmq long-running-processes