我的组织正准备实施一个新系统,这是一个 ASP.NET 应用程序。该应用程序将具有由网站发起的大量离线工作队列。该队列将保存不同类型的活动,最好是 XML 消息。想想电子邮件通知、计划任务等。

在过去,该组织可能会使用 MSMQ 来完成此任务。然而,他们认为 MSMQ 是老派的(我部分同意他们的观点),因此我们将进行架构审查以确定“最佳”解决方案。

在我看来,有几个可能的选择:

1.坚持在最新版本的 MSMQ 上使用新的实现 - 并不理想,但是一个已知的产品。
2.使用 Windows Workflow Foundation,我从其他一些开发人员那里听说过它已经用于此类事情。
3.开发自定义数据库解决方案。

我是否缺少任何明显的解决方案?理想情况下,这将是 Microsoft 产品,但实际上只需要在以 Microsoft 为中心的商店中工作即可。

我担心以下问题:
1.易于实施和维护
2.一个将持续一段时间的解决方案
3.能够处理大量行,其中包含中等大小的 XML 数据
4.绝对可靠的队列系统,具有快速更新(多个实用程序进程可能会从队列中抓取记录来处理它们)。

有帮助吗?

解决方案

阅读帖子好像你认为MSMQ是不适合的唯一原因是因为有人认为它是“老派”。我不认为这是一个足够好的理由不使用它,因为它看起来像你的公司有经验,所以就没有学习曲线,这意味着易于实施和维护。

此外,MSMQ将完美解决你提到你的所有问题。所以,除非还有另外一个“真实”的理由不使用它,我认为坚持使用MSMQ。

其他提示

我会建议寻找到WCF,你可以配置它来指定持久性,排队的消息,它使用MSMQ技术在幕后。的WCF抽象/接口和技术应该是周围好长一段时间。

我和驼鹿,在最丛林同意,MSMQ可能是你应该坚持什么。

我想也许研究使用MSMQ的掩护下,如 nServiceBus 从乌迪大汉一些替代的API。

作为替代ActiveMQ的(上述)有开源的RabbitMQ。从他们说什么与ASP.NET和WCF很好地集成。

http://www.rabbitmq.com/

让你看着一个服务代理在SQL Server?它是使用数据库作为后备存储的排队系统。

您有几个选择:

  1. 商务谈话:它专为保证企业级别的消息传递和路由而构建。它很难设置,价格昂贵,并且学习曲线陡峭,但一旦你打开它,它就会很稳定。

  2. 消息队列:快速、便宜,就像免费一样,易于使用,而且工作简单。

  3. SQL 服务代理。它比 MSMQ 前进了一步,但比 Biztalk 又下降了一大步。

主要问题实际上归结为您需要的功能集。Biztalk 几乎是它自己的开发环境。而 MSMQ 要求您围绕它构建一切。

您可以看看使用开放源代码消息代理例如的Apache的ActiveMQ

这似乎是你的整个系统,但是,你可以使用Windows工作流来管理你的业务逻辑,而只使用MSMQ作为存储您的任务列表。您的工作流程会拉动下一条消息从队列中开始,然后确定用它做什么。

排队的东西,你不想惹自己,把你的信任掉东西的作品下架,已被很多很多人已经测试过。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top