根据 MT 文档,每个总线实例应具有不同的队列名称。
什么将 WebApi 和后端队列连接在一起?
考虑更高级的场景
当我设计后端管道以使用消息处理时,我可以稍后对其进行切片并让它很容易地通过有线传输使用。问题是,我可以以某种方式配置 MT,以便 Azure 配置的总线将消息中继到配置了本地传输的总线吗?
最佳答案
我将在 MassTransit v3 的背景下回答这个问题,它支持 Azure 服务总线和 RabbitMQ。如果您要使用 Azure,我强烈推荐使用 v3,而不是 v2 的传输。
首先,关于请求。它们应该被发送,而不是出版。它们通常是自然的命令,而不是事件。我看到人们发布请求的唯一原因是他们没有服务的端点地址。因此了解端点有很大帮助。
其次,在您的示例中,每个 WebAPI 实例都应该有自己的队列来接收响应,因为它们会发送回请求者。使用 MT3,每个 IBus
实例都有一个独特的自动删除队列,该队列就是为此目的而设置的,用于处理来自请求的响应。
GitHub 上的 MassTransit 存储库中有一个示例 Sample-RequestResponse,它展示了如何使用 RabbitMQ 进行设置。 Azure 服务总线的情况大致相同。
将所有内容组合在一起的“结构”是虚拟主机(在 RabbitMQ 中)或命名空间(在 ASB 中)。主题和队列之间的连接决定了它们如何一起工作以形成逻辑总线。
关于azure - 公共(public)交通和多个公交车实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31722301/