我有一个分布式系统,其中将有1个SQL Server、1-n个处理服务器和1-n个数据供应商(网络上的硬件设备)。提供的数据在进入关系型DB结构之前需要进行处理,由处理服务器执行(作为Windows服务-.net代码解析数据、处理数据,并将其插入关系结构中)。
为了处理潜在的负载并不减慢数据供应商的速度,我想实现一个队列,但我不确定是否要添加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 的比较:
好的消息队列策略?