1

我的团队目前处于在许多不同的上下文中使用 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 方法方面遗漏了一些东西,该方法在比循环轮询设计更实时的设计中生成数据驱动事件。

4

2 回答 2

1

您可能想看看网关功能。您应该能够运行 2 种不同的传输并使用网关功能通过 HTTP 桥接两者。

于 2014-10-10T17:43:00.360 回答
0

我们有一个类似的系统,尽管它稍微容易一些,因为我们控制了底层数据库和应用程序(即不是第 3 方),并且当前的概念证明使用 ServiceBroker / SQLDependency / ServiceBus 作为其架构的一部分。

如果你走这条路,我还建议使用触发器来填充一个公用表,然后监控它。

直到今天我才知道 ServiceBroker.Net,所以无法发表评论。我也没有看过 CLR 存储的过程/触发器;那里是否有任何可能性。

其他人问了一个关于 nServiceBus 和 ServiceBroker 的问题,我在这里回答了这个问题,这可能对任何想要实现它的人有用。

于 2014-12-05T16:01:43.407 回答