【问题标题】:ASP.NET - best queue system for a new applicationASP.NET - 新应用程序的最佳队列系统
【发布时间】:2009-07-23 22:59:22
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

标签: .net workflow-foundation queue msmq message-queue


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        http://www.rabbitmq.com/

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

            你有几个选择:

            1. Biztalk:它是为保证企业级别的消息传递和路由而构建的。它很难设置、昂贵且学习曲线陡峭,但是一旦打开它就很可靠。

            2. MSMQ:快速、与免费版一样便宜、易于使用且简单易用。

            3. SQL 服务代理。它比 MSMQ 高出一步,但比 Biztalk 低了一大步。

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

            【讨论】:

            • SSB 有不少缺陷——在我眼里有些大缺陷。 1) 围绕回收对话句柄的复杂规模问题。 2) 每个节点的 SQL 许可证成本 - MSMQ 胜过我只有在混合使用 SQL 的情况下才会选择 SSB。
            【解决方案7】:

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

            【讨论】:

              【解决方案8】:

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2010-09-13
                • 2010-09-10
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-01-04
                • 1970-01-01
                • 2017-10-18
                相关资源
                最近更新 更多