.net - 到 MSMQ 还是不到 MSMQ? (或 SQL 表作为队列)

标签 .net sql-server msmq service-broker

我有一个分布式系统,其中有 1 个 SQL Server、1-n 个处理服务器和 1-n 个数据提供者(网络上的硬件设备)。提供的数据在进入关系数据库结构之前需要进行处理 - 由处理服务器执行(作为 Windows 服务 - .net 代码来解析数据、处理数据并将其插入关系结构中。)
为了处理潜在的负载并且不减慢数据提供者的速度,我想实现一个队列,但我不确定是否要增加 MSMQ 服务器的复杂性。 MSMQ 是否有一个好的替代方案,例如使用 DB(平面表)作为队列? .NET 是否为数据库队列提供任何开箱即用的支持,或者是否有其他可靠队列的选项?
谢谢

编辑:(11 月 29 日,晚上 11:30)
听起来 SQL Service Broker (SSB) 可能可以解决这个问题。
http://www.netframeworkdev.com/windows-communication-foundation/service-broker-vs-msmq-as-reliable-queueing-mechanism-63981.shtml

编辑:(11 月 30 日上午 7:45)
找到了关于此主题的另一个非常有用的链接:
http://social.msdn.microsoft.com/Forums/en-US/sqlservicebroker/thread/52687510-0852-44f3-bfcd-83610d1c1b9a
我还在研究将提供的数据的最大/最小大小。在他们的头顶上,有谁知道 MSMQ 和/或 SSB 能容纳的最大尺寸吗?
MSMQ:4MB消息大小
SSB:2GB消息大小

编辑:(11 月 30 日,上午 8:15)
MSMQ 和 SSB 之间的精彩比较如下:
Good Strategy for Message Queuing?

最佳答案

我会使用MSMQ,它不会增加太多复杂性,而且备份消息很容易,因此即使系统重新启动后也可以继续处理。您可以使用 SSB 之类的东西。

关于.net - 到 MSMQ 还是不到 MSMQ? (或 SQL 表作为队列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4311279/

相关文章:

sql-server - 无论如何要为 "SELECT"语句创建 SQL Server DDL 触发器吗?

c# - 使用 msmq 队列对服务进行负载平衡?

.net - 检查程序是否抛出异常

.net - 使用NHibernate的大型应用程序

sql - 列操作和消除重复

msmq - 访问消息队列系统被拒绝

.net - 使用 MSMQ 的多播时如何检测不可恢复的数据丢失?

c# - 如何向现有 Winforms 控件添加属性

.net - Outlook 2003 和 Outlook 2007 插件 COM 资源发布

sql-server - 像 '%[9-15]%'(SQL 服务器)