首页 > 解决方案 > MassTransit 多个消费者都在不同的名称空间中收到相同的消息?

问题描述

Environment:
 Three Projects (one publisher and three subscribers):
   consoleConsumer1
   consoleConsumer2
   consolePublisher1

发布者通过 consolePublisher1 命名空间中的 publishendpoint 发送消息

_publishEndPoint.Publish<ManagerCreated>()

我还有另外两个项目,肯定有两个不同的命名空间,它们意外地具有相同的消费者名称来处理 ManagerCreated 事件,所以通常我已经添加了这个消费者

    mt.AddConsumer<ManagerChangedIntegrationEventHandler>();

我希望masstransit 创建两个扇出交换和队列,名称如下

consoleConsumer1:ManagerChangedIntegrationEventHandler
and
consoleConsumer2:ManagerChangedIntegrationEventHandler

但它只创建一个名为的扇出交换:

ManagerChangedIntegrationEventHandler

这两个消费者竞争消费消息。我知道我可以创建队列端点,以便交换将消息发布到两个不同的队列,但是按照惯例有什么办法吗?

为什么项目名称或命名空间不应该影响交换和队列名称?

在消费者注册中使用命名空间的最佳方式是什么?

标签: .net-coremasstransit

解决方案


已经为此创建了一个问题,并且使用任何端点名称格式化程序包含命名空间的功能将在下一个版本中提供。


推荐阅读