NServiceBus使用RabbitMQ创建的Exchange的解释

时间:2015-01-30 13:57:00

标签: rabbitmq nservicebus

Exchanges

有人可以解释为什么NServiceBus创建上述RabbitMQ交换以及基于Handler配置的预期交换?

编辑:没有定义IEvent / IMessage /对象处理程序类。 使用DefiningEventAs不会改变任何内容(创建相同的交换和队列)。

                conf.DefiningEventsAs(
                    t => t.Name.EndsWith("Event") && t.Namespace != null && t.Namespace.EndsWith("Events"))                    
                .DefiningCommandsAs(
                    t => t.Name.EndsWith("Command") && t.Namespace != null && t.Namespace.EndsWith("Commands"))
                .UnicastBus()
                .ImpersonateSender(false);

参考装配:

  • NServiceBus 4.4.0.0
  • NServiceBus.Transports.RabbitMQ 1.1.0.0
  • RabbitMQ.Client 3.2.4.0

我们从更高版本降级(虽然不是最新版本,我现在不记得是哪一个),但没有任何改变。

1 个答案:

答案 0 :(得分:2)

这种行为是设计的,我们设置了包括IEvent和Object在内的所有交换,因为订阅者可以使用IHandleMessages<IEvent|object>消息处理程序订阅所有事件。我们无法知道是否有订阅者拥有此类处理程序,因此我们默认设置这些交换。

如果不使用它们应该不会造成任何伤害但是如果你想要摆脱它们,你可以通过实现自己的路由拓扑IRoutingTopology来忽略这些类型。然后,您将使用.UseRoutingTopology<MyRoutingTopology>()

注册传输