Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 到MSMQ还是不到MSMQ?(或SQL表作为队列)_.net_Sql Server_Msmq_Service Broker - Fatal编程技术网

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

.net 到MSMQ还是不到MSMQ?(或SQL表作为队列),.net,sql-server,msmq,service-broker,.net,Sql Server,Msmq,Service Broker,我有一个分布式系统,其中将有1个SQL Server、1-n个处理服务器和1-n个数据供应商(网络上的硬件设备)。所提供的数据需要在进入关系数据库结构之前进行处理—由处理服务器执行(作为windows服务—解析数据、处理数据并将其插入关系结构的.net代码)。 为了处理潜在的负载并且不降低数据供应商的速度,我想实现一个队列,但我不确定是否要将MSMQ服务器的复杂性添加到混合中。是否有替代MSMQ的好方法,例如使用DB(平面表)作为队列?.NET是否为DB队列提供现成的支持,或者是否有其他可靠队列

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

编辑:(11月29日,晚上11:30)
听起来SQL Service Broker(SSB)可能会起作用。

编辑:(11月30日上午7:45)
找到关于此主题的另一个非常有用的链接:

我还研究了将要提供的数据的最大/最小大小。有人知道MSMQ和/或SSB可容纳的最大尺寸吗?
MSMQ:4MB消息大小
SSB:2GB消息大小

编辑:(11月30日上午8:15)
MSMQ和SSB之间的巨大比较:

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

在这两个选项中,MSMQ实际上更简单。如果您需要重新确定工作优先级的功能,或者让处理代理只选择某些类型的排队作业,则不能使用MSMQ。如果您不需要任何这些提示,那么MSMQ是用于.NET的蛋糕。

尤其是使用事务性MSMQ。您可以在MSMQ队列中迭代,只处理一些消息:
MessageQueue.CreateCursor
,然后使用带光标的
Peek
Receive
重载。如果您想挑选和选择要处理的特定类型的邮件,最好为每种邮件类型设置单独的队列。@Richard这是您无法真正做到的“重新排序”。