为什么我需要两个SQL Server Service Broker队列来完成一项简单的任务?

时间:2013-02-01 09:17:28

标签: sql-server tsql service-broker

我在网上找到的使用SQL Server Service Broker队列的所有示例似乎都有两个队列。我不明白为什么,每个例子似乎都认为这是显而易见的,没有必要解释。

有几件事会写入我的队列,存储过程将从中读取并插入到数据库中。为什么我需要两个队列?

例如:http://www.techrepublic.com/article/use-service-broker-internal-activation-in-sql-server-2005/6156264#

2 个答案:

答案 0 :(得分:3)

从技术上讲,您可以在应用程序中使用SSB技术的一个队列。在这种情况下,此队列来自发起者的请求消息和来自目标的响应消息。您的存储过程应该实现相互区分的机制,对它们进行排序,确定哪个响应针对哪个请求等等。另外请记住,从这个队列中按顺序RECEIVE消息,你不能跳过其中一些消息并留在队列中进行进一步处理。

在你的情况下,按照Remus Rusanu的回答并使用数据库表实现队列可能更好吗?

SSB的想法很简单 - 发起者将请求消息放入Target的队列,同时在自己的队列中等待来自Target的响应消息。是你的情况吗?如果不是,也许你根本不需要SSB?

答案 1 :(得分:2)

Service Broker基本上与队列无关。 Service Broker用于编写分布式应用程序,而不是用于排队。队列只是用于服务的消息存储,一个服务在一台机器上,而另一个服务在另一台机器上。示例可能仅为了简单起见在同一数据库中显示两种服务,但该示例仍然是关于在分布式环境中进行通信。

显示单个队列显然足够的情况的示例正在错误地使用Service Broker。这些示例应该更好地显示how to use tables as queues