首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET和Server中的队列机制

.NET和Server中的队列机制
EN

Stack Overflow用户
提问于 2011-06-28 19:01:15
回答 3查看 2.8K关注 0票数 1

我有一个ASP.NET web应用程序,它向sql server发送长进程请求。我们想要改变这一点,而是将web请求发送到队列中,Windows服务会从队列中弹出消息,然后逐个发送到sql server。目前,我们需要决定用于队列的机制是什么。

正在考虑的实现队列的几个选项如下:

1)模拟队列的数据库表,或

2) Windows消息队列

我想找出使用windows和数据库表.的利弊。

更新

其他解决方案

服务经纪人:由Remus Rusanu推荐

它需要深入的学习曲线。帕夫蒙尼仍然不知道。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-28 22:47:46

不需要混合MSMQ或WCF,只需使用Server内置队列功能即可。有关示例,请参见异步过程执行。这样,您就不需要一个新的进程来解除MSMQ请求的队列并处理DB长调用,您不必处理单独的消息存储和DB strore,您对消息和数据都有一个连贯的回还原,在高可用性情况下,您的消息与数据一起失败。更别提SQL Server队列的规模比MSMQ大得多(无论在吞吐量还是容量方面)。使用MSMQ将要求您为所有这些问题提供一个解决方案:一致性备份/恢复、在发生HA事件时通过MSMQ与数据库一起失败、提供读取MSMQ消息的进程和执行DB工作。

票数 4
EN

Stack Overflow用户

发布于 2011-06-28 19:08:13

数据库表将需要轮询来检查数据库更改,除非您可以使用触发器设计一些聪明的东西。MSMQ不会,所以它在效率上赢了。

即使消费数据库关闭,队列也可以保证传递。数据库表不能。

我敢打赌数据库表对你来说更熟悉。MSMQ是一种新技术,它总是带有一定的风险。

设置队列意味着应用程序中另一个移动部分;这会增加复杂性。

我认为还有第三种方法:带有生产者/使用者的线程队列数据结构。查看一下.NET类,看看是否存在类似的东西。也许.NET中的多线程功能可以提供您所需的异步处理,而不像MSMQ那么复杂。

票数 3
EN

Stack Overflow用户

发布于 2011-06-28 19:11:46

通过WCF使用MSMQ实现。它的简单-难以置信的容易设置和处理接收代码,以及下降。

因此,从Asp.Net调用是微不足道的。

见:(及其他) http://blogs.msdn.com/b/skaufman/archive/2008/02/20/processing-multiple-queues-in-fifo-order-with-wcf.aspx

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6511738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档