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

cja*_*cja 5 t-sql sql-server service-broker

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

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

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

Ser*_*erg 3

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

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

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