4

我正在创建一个基于消息的体系结构,该体系结构当前使用轮询客户端来检索消息。出于显而易见的原因,我想将我的客户端注册到 SQL Server 2008,以便在将消息插入表时接收事件。

我一直在网上搜索 SQL Server 消息代理、CLR 存储过程和 StreamInsight,但我似乎找不到我要找的东西:SQL Server 提醒我的服务有消息的方法已收到。基本上是事件驱动而不是轮询模型。

这存在吗?关于从哪里开始的任何想法?有没有例子?

4

1 回答 1

3

是的,这确实存在。我已经成功使用 SQL Service Broker。我不熟悉您列出的其他选项。

设置 SSB 很痛苦,因为有很多活动部件和细节,但它工作得很好。帮助您避免轮询的主要部分是您从 C# 创建和调用的存储过程。在那个简短的过程中是一个 RECEIVE WAITFOR 语句,它会阻止您打开和处理的连接,直到您的队列中有消息可用或您的超时命中。在 C# 中,无论您得到结果还是超时,都会立即再次运行该过程以等待下一项。

如果可能,您需要将与 SQL ... 的打开连接数限制为 1。如果您有多个相关方,请通过该连接推送他们的所有内容,并通过其他方式将其与 C# 服务器一起分发。

于 2012-04-27T15:36:27.707 回答