如何使用 Rebus 与 MassTransit 创建的 Azure 服务总线主题互操作?

How to interop with Azure Service Bus topics created by MassTransit using Rebus?

我有一个现有系统,它通过 MassTransit 将消息发布到某个名为 CompanyName.SystemName.Messages.SomethingGotUpdated 的 Azure 服务总线 topic。我如何使用 Rebus 配置新系统成为该特定主题的订阅者,然后将所有消息路由到适当的 IHandleMessages<SomethingGotUpdated> 处理程序?

我查看了文档,但无法真正弄清楚如何完成此操作。非常感谢任何帮助!

您应该通过创建一个 MassTransit-based 接收器来完成此操作,该接收器接收来自给定主题的消息,然后将消息(通过使用 Rebus 的 one-way client)转发到您的 Rebus 端点).

你应该这样做的原因是,MassTransit 和 Rebus 很可能以略有不同的方式使用 Azure 服务总线,并且消息上的 headers 非常不同,这意味着两者服务巴士不会很容易wire-compatible。

有些人可能会想以某种方式找出解决此类问题的方法,可能是在 incoming messages pipeline 中插入一个步骤,将 MassTransit headers 映射到 Rebus header s,但我担心你甚至不会执行你的步骤,因为 Rebus 需要一个特定的消息 ID header 存在,否则它会立即将消息移动到错误 queue.

我的建议是考虑你的 MassTransit-based 系统本身,就好像它使用一个完全独立的网络进行通信,然后考虑你的 Rebus-based 部分也是一个系统.