【问题标题】:Why do I need two SQL Server Service Broker queues for a simple task?为什么我需要两个 SQL Server Service Broker 队列来完成一个简单的任务?
【发布时间】:2013-02-01 09:17:27
【问题描述】:

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

一些东西会写入我的队列,存储过程将从它读取并插入数据库。为什么我需要两个队列?

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

【问题讨论】:

    标签: sql-server tsql service-broker


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这可能只是一个术语问题,但由于队列是一个基本的 Service Broker 概念 (CREATE QUEUE),所以说它们彼此没有任何关系有点令人困惑。
      猜你喜欢
      • 2010-11-18
      • 2021-08-19
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      • 2016-10-27
      • 1970-01-01
      • 2015-02-12
      • 1970-01-01
      相关资源
      最近更新 更多