Nservicebus 关于使用IHandleMessages的一些困惑

Nservicebus 关于使用IHandleMessages的一些困惑,nservicebus,Nservicebus,我有一个订阅多个不同出版商的订户。所有这些发布者都发布了一条消息,其接口来自基本接口。此基本消息包含所有消息所需的一些公共属性,是一个标记 public interface IBaseMessage : IMessage {} public inteface IPublisher1Message : IBaseMessage {} public inteface IPublisher2Message : IBaseMessage {} 在订阅服务器中,我创建了一个类,订阅系统中的所有发布服

我有一个订阅多个不同出版商的订户。所有这些发布者都发布了一条消息,其接口来自基本接口。此基本消息包含所有消息所需的一些公共属性,是一个标记

public interface IBaseMessage : IMessage
{}

public inteface IPublisher1Message : IBaseMessage
{}

public inteface IPublisher2Message : IBaseMessage
{}
在订阅服务器中,我创建了一个类,订阅系统中的所有发布服务器

public BaseMessageHandler : IHandleMessages<IBaseMessage>
{
  public void Handle(IBaseMessage message) {}
}
public-BaseMessageHandler:IHandleMessages
{
公共无效句柄(IBaseMessage消息){}
}
我想用它来处理来自所有发布者的消息,但我看到它在最多一个发布者中启动,这取决于我如何进行消息端点映射

<MessageEndpointMappings>
 <add Messages="Messages.IPublisher1Messages,Messages" Endpoint="Publisher1" />
  <add Messages="Messages.IPublisher2Messages,Messages" Endpoint="Publisher2" />
</MessageEndpointMappings>


有没有一种方法可以在一个处理程序中处理来自不同发布者的消息?

您是否依赖自动订阅此处理程序

因为我想我可以回忆起曾经遇到过类似于你的问题——正如我记得的那样,解决方案是手动订阅每条消息


您仍然可以依赖多态消息分派,只是多态自动订阅似乎不起作用。

您的配置似乎是正确的,只是我将在映射中引用整个程序集,而不是每个特定类型。然后将扫描程序集中的所有类型。每个发布者端点都需要有一个映射。Adam,当我这样做的时候,它让人恶心,因为你不能为同一组消息拥有两个不同的发布者。我的所有邮件都在一个程序集中。很高兴知道,根据下面的帖子,如果不手动订阅所有内容,这可能无法工作。为此,您需要接管初始化并设置.DoNotAutoSubscribe()。这似乎可行,但我必须订阅每个派生类型,这在我的使用场景中并不理想。你知道为什么这个自动订阅不起作用吗?不,我不知道为什么它不起作用。但是你可以自己做自动订阅,比如