我目前使用带有MSMQ的NServiceBus进行内部部署设置。有一个ServiceControl实例,它接收所有错误和审计消息。
现在我正在做一个新项目,它将使用Azure进行托管,即我将使用RabbitMQ作为tansport在Azure中托管各种NServiceBus端点(可能使用Kubernetes或Service Fabric),我希望Azure端点能够与内部部署端点通信,反之亦然。
我偶然发现了社区驱动的项目NServiceBus.Bridge,这似乎对这种情况很有用。但我有一些不确定因素。
根据我描述的要求,这是一个好方法吗?
哪里是托管Bridge端点,内部部署或Azure的最佳位置?或者我是否需要在每个位置都有一个Bridge端点,因为我希望能够在每个方向发送和发布消息?
如何处理错误,审核和控制(例如Heartbeat)消息,因为它们是使用特定的NServiceBus配置(SendFailedMessagesTo,AuditProcessedMessagesTo和HeartbeatPlugin)设置的,因此似乎无法成为送过桥?我认为如果消息最终可以在我的内部部署ServiceControl实例上最佳,那么我将所有错误/审计数据放在一个地方,从而能够在ServiceInsight中看到完整的消息流。
< / LI>答案 0 :(得分:1)
您正在关注的是混合解决方案。使用NServiceBus.Bridge是一种有效的方法来连接NServiceBus端点/特定平台,当它们不在同一个传输上时。有一个sample project正在为RabbitMQ和MSMQ展示混合解决方案。
托管Bridge端点,内部部署或Azure的最佳位置在哪里?
处理MSMQ,您希望桥接过程尽可能接近MSMQ端点。
如何处理错误,审核和控制(例如Heartbeat)消息,
对于错误,审核和心跳消息,它们应由ServiceControl Transpor Adapter处理。还有RabbitMQ的样本以及here。