4

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

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

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

4

2 回答 2

3

从技术上讲,您可以在应用程序中使用一个使用 SSB 技术的队列。在这种情况下,这个队列有来自发起者的请求消息和来自目标的响应消息的混乱。你的存储过程应该实现一种机制来区分它们,对它们进行分类,决定哪个响应是针对哪个请求等等。还要记住,从这个队列中接收消息的顺序是准确的,你不能跳过其中的一些并留在队列中进行进一步处理。

在您的情况下,也许更好地遵循 Remus Rusanu 的回答并使用数据库表实现您的队列?

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

于 2013-02-02T11:31:44.163 回答
2

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

显示单个队列显然就足够的示例是错误地使用 Service Broker。这些示例应该更好地展示如何将表用作队列

于 2013-02-01T11:33:03.097 回答