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