我的团队目前处于在许多不同的上下文中使用 NServiceBus(v4,可能是 v5)设计实现的初始阶段,以促进我们的许多自定义应用程序之间的集成。然而,我们也想利用 NServiceBus 来引发由我们一些现成的第三方系统触发的业务事件。这些系统不提供固有的消息传递或事件 API,因此我们目前的想法是使用触发器和潜在的 SQL Service Broker 作为连接到 NServiceBus 的桥梁来连接到它们的底层数据库。
我看过ServiceBroker.net但这似乎通过创建一个全新的 ITransport 来使用 NServiceBus v2 或 v3 api、接口等。不过,我们计划使用更新版本的 NServiceBus,所以这似乎不是一个可靠的选择。SO 上的其他一些类似的问题(都是几年前的问题)似乎可以通过简单使用 SQL 传输的指导来回答。这使用基于表的伪队列而不是 MSMQ,但尚不清楚是否建议让 SQL 触发器手工制作 NServiceBus 消息记录并直接将它们手动插入到伪队列表中,或者是否仍然存在在中间使用 SQL Service Broker 以某种方式更本机地将 NServiceBus 消息弹出到总线上。如果以某种方式使用 SQLTransport 是答案,
几年前似乎有一些关于 SQL Service Broker 桥接到 NServiceBus 的协调运动,但在引入本机 NServiceBus SQLTransport 后就被弃用了。我觉得也许我在现代 NServiceBus 方法方面遗漏了一些东西,该方法在比循环轮询设计更实时的设计中生成数据驱动事件。