两个NServiceBus与SqlTransport之间的桥梁

时间:2014-07-21 13:05:31

标签: nservicebus bus bridge

我有2个NServiceBus总线,两者都配置为使用Sql Transport。我想在他们之间进行以下活动:

1)发布活动

2)发送命令(没有pub / sub)。

经过调查,我得出了许多候选解决方案:

1)使用HTTP网关。我没有使用此选项,因为我更愿意保留对数据库的所有活动。因此我对此不以为然。

2)从Github上的NServiceBus.SqlServer.Samples调整SqlBridge示例。这似乎能够监视输入队列(尽管在Msmq中),然后发布到自己的总线,然后订阅者可以接收事件。我对这个解决方案有一些疑问:

  • 此样本可以适用于Sql - > Sql总线?
  • 将为输入地址指定什么,因为您需要同时指定连接字符串和用于监视事件的表?
  • 可能是一个更广泛的问题,但这个解决方案是基于IAdvancedSatellite的使用。我找不到IAdvancedSatellite(或者实际上是ISatellite)的定义以及为什么我会考虑使用它。有什么用例?

3)定制的解决方案。 (我已经从中获取了很多细节以保持简洁并保存那些疲惫的眼睛:-))这个解决方案涉及有一个专用的(非NServiceBus)数据库,NSB主机将发布消息。要在2个总线之间建立桥接,NSB主机将处理消息并写入事件表。在另一条总线上,NSB主机将使用IWantToRunWhenBusStartsAndStops监视该表,然后发送到其总线。

我喜欢选项2的想法,因为这似乎是使用现有的结构(总是假设我对IAdvancedSatellite有所了解,我希望有人可以提供)

2 个答案:

答案 0 :(得分:0)

看看这个Issue

如果这是您要找的内容,可以在1.2.0中找到 (看一下发行说明......)

答案 1 :(得分:0)

我通过使用IAdvancedSatellite样本解决了这个问题。我通过提供连接字符串和“源”上的队列来调整这一点,卫星将获得要带入目的地总线的消息。需要注意的事项:

1)您必须在'source'总线中创建SQLBridge队列。 2)您必须在源总线上创建从源发布者到SQL Bridge队列的事件订阅。

以上两项对于自动配置来说是微不足道的,但目前我的解决方案只是一个PoC。

问候。