9

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

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

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

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

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

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

4

8 回答 8

13

阅读这篇文章似乎您认为 MSMQ 不适合的唯一原因是因为有人认为它是“老派”。我不认为这是不使用它的充分理由,因为看起来贵公司有使用它的经验,所以没有学习曲线,这意味着易于实施和维护。

另外,MSMQ 将完美地解决您提到的所有问题。因此,除非有另一个“真正”的理由不使用它,否则我会认为坚持使用 MSMQ。

于 2008-12-01T01:48:51.863 回答
3

我建议研究 WCF,您可以将其配置为指定持久的、排队的消息传递,并且它在幕后使用 MSMQ 技术。WCF 抽象/接口和技术应该存在很长时间。

于 2008-12-01T01:40:36.137 回答
2

我同意 Moose-in-the-jungle 的观点,MSMQ 可能是你应该坚持的。

我可能会研究一些使用 MSMQ 的替代 API,比如Udi Dahan 的nServiceBus

于 2008-12-01T14:29:59.737 回答
2

作为 ActiveMQ(上面提到的)的替代品,有开源的 RabbitMQ。据他们所说,它与 ASP.NET 和 WCF 很好地集成在一起。

http://www.rabbitmq.com/

于 2009-06-08T22:35:13.207 回答
1

您是否查看过 SQL Server 中的 Service Broker?它是一个使用数据库作为后备存储的排队系统。

于 2008-12-01T01:38:19.620 回答
0

你有几个选择:

  1. Biztalk:它是为保证公司级别的消息传递和路由而构建的。它很难设置,价格昂贵,并且学习曲线陡峭,但是一旦打开它,它就很稳固了。

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

  3. SQL 服务代理。它比 MSMQ 更上一层楼,但比 Biztalk 低了一大步。

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

于 2008-12-01T04:12:01.403 回答
0

您可以考虑使用开源消息代理,例如Apache ActiveMQ

于 2008-12-01T10:39:28.920 回答
0

不过,对于您的整个系统来说,您可以使用 Windows Workflow 来管理您的业务逻辑,并且只使用 MSMQ 作为您的任务列表的存储。您的工作流程将从队列中拉出下一条消息开始,然后确定如何处理它。

排队是您不想惹恼自己的事情,请将您的信任放在现成的有效并且已经被很多人测试过的东西上。

于 2009-02-16T09:24:12.353 回答