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);
引用的程序集:
- NServiceBus 4.4.0.0
- NServiceBus.Transports.RabbitMQ 1.1.0.0
- RabbitMQ.Client 3.2.4.0
我们从更高版本降级(虽然不是最新的,我现在不记得是哪个)但没有任何变化。
此行为是设计使然,我们设置了所有交换,包括 IEvent 和 Object,因为可能有订阅者使用 IHandleMessages<IEvent|object>
消息处理程序订阅所有事件。我们无法知道是否有订阅者拥有此类处理程序,因此我们默认设置这些交换。
如果不使用它们应该不会造成伤害,但如果您想摆脱它们,您可以通过实现您自己的路由拓扑来覆盖此行为,IRoutingTopology
忽略这些类型。然后,您将使用 .UseRoutingTopology<MyRoutingTopology>()
注册传输
任何人都可以解释为什么 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
我们从更高版本降级(虽然不是最新的,我现在不记得是哪个)但没有任何变化。
此行为是设计使然,我们设置了所有交换,包括 IEvent 和 Object,因为可能有订阅者使用 IHandleMessages<IEvent|object>
消息处理程序订阅所有事件。我们无法知道是否有订阅者拥有此类处理程序,因此我们默认设置这些交换。
如果不使用它们应该不会造成伤害,但如果您想摆脱它们,您可以通过实现您自己的路由拓扑来覆盖此行为,IRoutingTopology
忽略这些类型。然后,您将使用 .UseRoutingTopology<MyRoutingTopology>()