【发布时间】:2018-07-03 10:37:10
【问题描述】:
我正在尝试将 SSB 用作多个分布式逻辑站的全双工消息传递基础设施。 多个站点可以驻留在同一进程上,也可以驻留在不同的机器上(没关系)。 这些站点需要通过不断地来回发送消息来相互通信和同步。 这些站作为 Windows 服务的一部分运行,因此,站的生命周期很长。 一个站发送的每个消息都可以指定给单个站或多个站或所有站(广播)。 仅当消息被指定给特定站点或广播消息时,消息才与特定站点相关。
SSB 的所有 Dialog/Convertation/Group 术语真的让我很困惑。
我不知道如何确定谁以及何时应该成为发起者/目标,因为根据我的情况,每个站都可以在需要时发送消息,并且应该一直接收相关消息。
由于许多站点可能同时向许多其他站点发送消息,因此出队时间应该尽可能快,并且性能必须是最佳的。
According to Microsoft,我应该使用包含许多消息的多次对话以获得最佳性能。 但我不知道何时以及如何创建单独的对话/对话,以及对话何时结束(如果有的话)。
有人可以对此有所了解,并为我的案件提供正确的方向吗?
谢谢。
【问题讨论】:
-
恕我直言,SB 不是适合这里工作的工具,因为它本身不支持广播(发布/订阅模型);您需要在代码(T-SQL 或应用程序)中执行此操作。消费者(发起者)创建与实施服务(目标)的对话。对话由发起者和目标消息的单独队列实现。至少,在您的情况下,每个站都是一个 SB 服务,每个站可能既是发起者又是目标。预计会有什么样的消息量?
-
对话是两种方式吗?还是对于任何两个参与者,任何一方都可以向另一方发送消息?
-
@DanGuzman 目前,根据我的测试,单站每秒最多可以发送76条消息。
-
@BenThul 我猜是后者,任何电台都可以在任何给定时间向任何其他电台发送消息,或发送给多个电台,或向所有电台广播消息。
标签: sql-server distributed-computing service-broker sqlperformance