相关疑难解决方法(0)

ASP.NET 4.0-后台工作者 - 最佳实践

我已经实现了在ASP.NET下运行的几种不同类型的后台工作程序,但想知道推荐/最佳实践方法可能是什么.

在数据存储(在这种情况下是mongo db)中,我有一个我需要处理的操作队列.

队列将根据ASP.NET MVC应用程序中的某些操作而增长.

我想启动一个后台线程/工作线程来连续处理这些排队的项目.

是否像在应用程序的启动事件中启动后台工作程序一样简单,还是应该在计时器上完成?

提前致谢

SAM

c# asp.net asp.net-mvc-3

6
推荐指数
1
解决办法
1万
查看次数

带有进度通知的长时间运行的后台任务

我有一个 ASP.NET 网站,其中包含许多长时间运行(5 分钟到 2 小时)的用户启动的任务。我希望每个用户都能够看到自己作业的进度,并且能够关闭浏览器并稍后返回。

当前的计划是在每个作业启动时将其存储在数据库中,并将消息发布到 RabbitMQ 队列,Windows 服务将接收该消息并开始处理该作业。

但是,我不确定将进度信息从服务传递回网络服务器的最佳方法?我看到两个选择:

  • 将进度信息存储在数据库中,并通过网络应用程序对其进行轮询
  • 在网络服务器中有一个 RabbitMQ 消费者,并让 Windows 服务将进度消息发布到该队列

我倾向于第二种选择,因为我真的不想通过定期轮询/写入进度信息来增加数据库的更多开销。然而,有很多关于使用 RabbitMQ(作为消费者)的警告- 因为我没有发送重要消息(如果进度消息没有被处理也没关系),我想知道这是否重要?这并不是困难(著名的遗言)。

这个选项听起来合理吗?还有更好的选择吗?

architecture asp.net windows-services rabbitmq long-running-processes

0
推荐指数
1
解决办法
1505
查看次数