5

假设我想使用 RabbitMQ 使用来自 ASP.net MVC 4 的 AMQP 消息。我在System.Web.HttpContext.Current.Application中存储了一个对象,该对象在内部使用 BackgroundWorker 的一个实例来侦听消息(侦听器是在Global.asax.cs中创建的)

这是实现此操作的好方法还是应该使用静态类/单例?我对 ASP.net MVC 缺乏经验,所以我不确定。也许 ASP.net MVC 4 不是最佳平台选择?你会推荐什么?

目标是能够从 Web 界面随意监控/记录消息流量、杀死/创建/配置消费者。

这是我的第一篇 stackoverflow 帖子,因为我相信好的研究。但是,这次我想听听其他人的意见,thx :)

4

1 回答 1

4

在我看来,一个 ASP.NET 应用程序是一个糟糕的 RabbitMQ 订阅者。您最好将您的订阅者实现为 Windows 服务。

  1. Phil Haack 的这篇出色的文章给出了一些很好的理由,为什么应该三思而后行将 BackgroundWorker 用于任何严肃的服务。
  2. 这意味着您可以独立于您的 Web 应用程序来监控和维护您的订阅者。您可以使用 Windows 为您提供的所有开箱即用工具 - 任务监视器、性能监视​​器 - 来了解您的服务的行为方式。
  3. 您可以独立于 Web 应用程序扩展订阅者。您可能只需要一个 Web 应用程序实例,但需要两个订阅者。将它们作为单独的进程为您提供了那种更细粒度的控制。
于 2013-03-12T09:29:31.560 回答