我需要一个针对发布者/订阅者功能的企业服务总线/消息队列解决方案。我知道MANY存在...... MSMQ,MS系列,RabbitMQ,NServiceBus等等......
我的一个要求是,在共享托管解决方案中,我能保证的唯一依赖项是SQL 2005及更高版本......这将我直接引导到SQL Service Broker。
如果听起来我正试图将ESB功能塞进SSB ......我想我是......
我的问题是:有没有人知道一个位于SQL Service Broker之上的.NET API或框架,并且已经提供了很多管道工程?
如果我使用纯ADO.net,我可以通过调用存储过程将项添加到队列中,但随后:
正是这些问题让我希望已经存在一个已经完成所有这一切的.net解决方案。
答案 0 :(得分:7)
努力打包WCF Transport Channel for SQL Server Service Broker,但afaik是弃用软件。
但是NServiceBus支持Service Broker作为传输,请参阅Using NServiceBus and ServiceBroker.net并且有像A simple wrapper API for SQL Service Broker and an ITransport plugin for NServiceBus这样的github项目。虽然不完全是主流,但确实存在一些支持和社区努力。
作为一名ESB,我认为由于缺乏真正的pub-sub和广播,你会遇到问题。 SQL Server 2012能够向多个目标发送消息,请参阅如何Multicast messages with SQL Server Service Broker,但您仍需要从头开始实现pub-sub基础结构(发布主题,订阅者等)。 MySpace做到了这一点并且是一项重大努力,请参阅Scale out SQL Server by using Reliable Messaging。我的观察指的是SSB的低级别直接使用,我从未使用过NServiceBus,因此我无法分辨它在SSB上抽象/暴露unicast / broadcast / multicast / pub-sub的效果如何。
至于您的具体问题,建议您阅读Writing Service Broker Procedures和Reusing Conversations。