我有一个分布式系统,其中将有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邮件大小
编辑:(30 nov,8; 15am)
MSMQ& amp; SSB在这里:
Good Strategy for Message Queuing?
答案 0 :(得分:4)
我会使用MSMQ,它不会增加那么多的复杂性,并且它很容易备份消息,因此即使在系统重启后处理也可以继续。你可以使用像SSB这样的东西。
答案 1 :(得分:2)
在这两个选项中,MSMQ实际上更简单。如果您需要重新确定工作的优先级,或者让处理代理只选择某些类型的排队作业,那么您就无法使用MSMQ。如果你不需要任何这些花哨的东西,那么MSMQ就是用于.NET的蛋糕。