sql-server – SQL Service Broker,作为.net的通用企业消息总线

我需要一个针对发布者/订阅功能的企业服务总线/消息队列解决方案.我知道MANY存在…… MSMQ,MS系列,RabbitMQ,NServiceBus等等……

我的一个要求是在共享托管解决方案中,我能保证的唯一依赖是sql 2005及更高版本…这直接引导我直接进入sql Service broker.

如果听起来我正试图将ESB功能塞进SSB ……我想我是……

我的问题是:有没有人知道一个.NET API或框架,它位于sql Service broker之上并且已经提供了大量的管道工程?

如果我使用纯ADO.net,我可以通过调用存储过程将项添加到队列,但是然后:

>对于谈话的性质,我会为每条消息进行一次对话吗?
>如果是,我是否会丢失顺序消息处理?
>我如何接收消息(我知道t-sql中的接收语法),我是否在消息循环中重复调用存储过程以尝试
从队列中获取消息?
>或者我会等待吗?保持连接打开并永久执行存储过程?
> sql Service broker不支持独白对话,但我读过它们可以实现…

正是这些问题让我希望已经存在一个已经完成所有这一切的.net解决方案.

解决方法

一个努力打包 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所以我无法分辨它是如何抽象/暴露unicast / broadcast / multicast / pub-sub的SSB.

至于您的具体问题,我建议您阅读Writing Service Broker ProceduresReusing Conversations.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...