【问题标题】:How to interop with Azure Service Bus topics created by MassTransit using Rebus?如何与 MassTransit 使用 Rebus 创建的 Azure 服务总线主题进行互操作?
【发布时间】:2017-10-20 03:06:08
【问题描述】:
我有一个现有系统,它通过 MassTransit 将消息发布到名为 CompanyName.SystemName.Messages.SomethingGotUpdated 的某个 Azure 服务总线 主题。如何使用 Rebus 配置新系统成为该特定主题的订阅者,然后将所有消息路由到适当的 IHandleMessages<SomethingGotUpdated> 处理程序?
我查看了文档,但无法真正弄清楚如何完成此操作。非常感谢任何帮助!
【问题讨论】:
标签:
c#
azureservicebus
masstransit
rebus
azure-servicebus-topics
【解决方案1】:
您应该通过创建一个基于 MassTransit 的接收器来实现,该接收器接收来自给定主题的消息,然后将消息(通过使用 Rebus 的one-way client)转发到您的 Rebus 端点。
您应该这样做的原因是,MassTransit 和 Rebus 最有可能以稍微不同的方式使用 Azure 服务总线,并且消息上的标头也非常不同,这意味着这两个服务总线不会很容易连接-兼容。
有些人可能会想以某种方式解决此类问题,可能是通过在 incoming messages pipeline 中插入一个将 MassTransit 标头映射到 Rebus 标头的步骤,但我担心您甚至不会执行您的步骤因为 Rebus 需要一个特定的消息 ID 头存在,否则它会立即将消息移动到错误队列中。
我的建议是,将基于 MassTransit 的系统视为自己的东西,就好像它使用完全独立的网络进行通信一样,然后将基于 Rebus 的部件也视为自己的系统。