有没有办法使用 SQL Server 作为物理消息传输,而不是使用 NServiceBus 的内置 MSMQ 消息传输?
谢谢
在 NServiceBus 4.0 上,您现在可以只使用Sql Server 作为传输机制,因此您不必实现 ITransport 等。
SQL Server 包含Service Broker形式的内置消息传递。这为您提供了不同的高效、高速、高吞吐量、异步和可靠的 SQL Server 实例之间的消息传输。考虑到 SQL Server Express 支持 Service Broker 并且我知道部署使用数十、数百个 Express 实例地理分布,与中央更高版本的 SQL 实例交换消息,仅针对 SQL 实例的事实并不像听起来那么糟糕.
主要问题是缺少 C#/.Net API,不支持 WCF 通道,也不支持 NServiceBus。有各种项目试图解决这个问题,或多或少都取得了成功。最终这将取决于决定的驱动因素是什么:与现有的消息总线(如 NServiceBus)集成,或者以依赖 SQL Server 专有总线为代价的原始性能和可靠性。
很抱歉回答这么老的话题,但是有一个使用 SQL 服务器作为消息传输的 .Net 消息总线项目:NGinn.MessageBus(位于http://code.google.com/p/nginn-messagebus/)。这是我专门为已经在使用 SQL Server 的应用程序创建的宠物开源项目。该项目已经足够成熟,可以在生产中使用。更多信息可以在项目网站上找到。
在 NServiceBus 3.0 中,与 2.6 相比,我们使插入您自己的传输机制变得更加容易。在 2.6 中,您将实现巨大的 ITransport 接口。在 3.0 中,您只需要实现 ISendMessages 和 IReceiveMessages
您可能希望研究实现自定义 ITransport 来完成此操作。