NServiceBus 与 RabbitMQ 创建的 Exchange 说明

Explanation for Exchanges created by NServiceBus with RabbitMQ

任何人都可以解释为什么 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);

引用的程序集:

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

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

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

注册传输