【发布时间】:2014-07-21 13:05:31
【问题描述】:
我有 2 个 NServiceBus 总线,它们都配置为使用 Sql Transport。我想在他们之间进行以下活动:
1) 发布事件
2) 发送命令(没有发布/订阅)。
经过调查,我得出了一些候选解决方案:
1) 使用 HTTP 网关。我没有使用此选项,因为我希望将所有活动都保留在数据库中。所以我打折了。
2) 改编来自 Github 上 NServiceBus.SqlServer.Samples 的 SqlBridge 示例。这似乎能够监视输入队列(尽管在 Msmq 中),然后发布到其自己的总线,然后订阅者可以接收事件。我对此解决方案有一些疑问:
- 此示例能否适用于 Sql -> Sql 总线?
- 要为输入地址指定什么,因为您似乎需要同时指定连接字符串和用于监视事件的表?
- 可能是一个更广泛的问题,但此解决方案基于使用 IAdvancedSatellite。我找不到 IAdvancedSatellite(或实际上是 ISatellite)的定义以及为什么我会考虑使用一个。这有什么用例?
3) 定制解决方案。 (我已经从中删除了很多细节以保持简短并节省那些疲倦的眼睛:-))此解决方案涉及拥有一个专用的(非 NServiceBus)数据库,NSB 主机将向该数据库发布消息。为了在 2 条总线之间桥接,NSB 主机将处理消息并写入事件表。在另一条总线上,NSB 主机将使用 IWantToRunWhenBusStartsAndStops 监视此表,然后发送到其总线。
我喜欢选项 2 的想法,因为这似乎使用了现有的结构(总是假设我对 IAdvancedSatellite 有所了解,希望有人能提供)
【问题讨论】:
-
选项 2 听起来像是要走的路...我会尽快回复您的问题...
标签: nservicebus bus bridge