双向SQL Service Broker

时间:2018-07-03 10:37:10

标签: sql-server distributed-computing service-broker sqlperformance

我正在尝试将SSB用作多个分布式逻辑站的全双工消息收发基础。 多个工作站可以驻留在同一进程中,也可以驻留在不同的机器上(无关紧要)。 站点需要通过不断地来回发送消息来相互通信和同步。 这些工作站作为Windows服务的一部分运行,因此,该工作站的寿命很长。 一个站发送的每个消息可以指定给一个站或多个站或所有站(广播)。 仅当消息指定给特定电台或广播消息时,该消息才与该特定电台相关。

所有SSB的Dialog / Constation / Group术语确实让我感到困惑。

我不知道如何确定谁和何时成为发起者/目标,因为根据我的情况,每个站点都可以在需要时发送消息,并且应该一直接收相关消息。

由于许多站点可能同时向其他许多站点发送消息,因此出队时间应尽可能快,并且性能必须达到最佳。

According to Microsoft,为了获得最佳性能,我应该使用许多对话和许多消息。 但是我无法弄清楚何时以及如何创建一个单独的对话框/对话,以及对话何时结束(如果有的话)。

有人可以说明一下这个问题,并为我的案件提供正确的指导吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

假设每个站点都有其他站点的清单(这可能需要一些时间!),这应该可行。

关于发起者/目标术语,发起对话的人是发起者,该消息的收件人是目标。想象以下现实世界中的对话。我将在发起方发送的所有消息前添加[I],在目标发送方的消息之前添加[T]

  • [I]百货商店你好。告诉我您要买哪种袜子。
  • [T]我们出售红色,白色和蓝色的袜子。
  • [I]我要买两双红色的袜子。
  • [T]好的

在那种情况下,只有一个目标,但是可以在考虑多个目标的情况下启动给定对话(在“多个电台”或“广播”方案中)。为了进一步推论上面的类比,这类似于一次呼叫多个商店并要求他们所有的袜子库存。

了解为什么您需要知道谁是发起者和目标,上述对话可以分为以下消息类型:InventoryRequest,InventoryResponse,PurchaceRequest,PurchaseResponse。如果将所有这些捆绑为一份合同,则应该参加比赛。