sql服务代理功能问题

时间:2009-05-08 07:58:09

标签: sql-server message-queue messages service-broker

我是一个开始的Web开发人员,他坐在一个雄心勃勃的Web应用程序项目上。

所以在做了一些研究后,我发现了SQL Service Broker。这似乎是我可以使用的东西,但我不确定。由于学习它需要有人花费大量时间,我想确保它符合我的需要。

我需要实施一个网站用户可以向网站提交文本的系统。这个消息流必须是冗余的并以FIFO方式处理,在流的另一端处有另一组处理消息的用户。

现在,应锁定最后一组用户之一正在读取的消息,以便其他任何人都无法同时读取该消息。然后,用户可以决定是否处理该消息。只有当他决定处理该消息时,才能将其从队列中删除。如果他决定不想处理消息,则应将消息放回队列中(在队列末尾,或者至少具有最高优先级),以便其他用户可以阅读并决定

这是我能用SQL Service Broker实现的吗?我走错了路吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

IMO,Service Broker的最佳用途是以松散耦合的方式连接到独立的应用程序。我的意思是,以这种方式绑定的系统可以通过一组相互商定的消息类型进行通信。这与一个应用程序直接操纵另一个数据库相反,例如。

根据您的说法,我将其实现为一个简单的表,例如:创建一个带有标识PK,分配标志和自定义列的消息表。每当操作员想要获取最后一条消息时,获取Allocation ='N'的最低PK值并将Allocation更新为'Y'。这在一次交易中。 当/如果操作决定将消息返回队列时,只需将其AllocationFlag设置为'N'及其后面。

这只是一个例子。在这种情况下,数据库为您提供一致性,高负载性能等。

在屏幕后面,您提交给SSB的所有数据都作为表存储和操作,因此没有理由比数据库解决方案更快。