Nservicebus 多个订阅服务器-仅调用一个事件处理程序

Nservicebus 多个订阅服务器-仅调用一个事件处理程序,nservicebus,Nservicebus,我使用的是NServiceBus 5.1.2,事件订阅有问题: 我有2名工人(查询工人和命令工人): public class EndpointConfig:IConfigureThisEndpoint,AsA_Worker { public void自定义(总线配置生成器) { var container=BuildContainer(); builder.UseContainer(c=>c.ExistingLifetimeScope(容器)); builder.UseTransport();

我使用的是NServiceBus 5.1.2,事件订阅有问题:

我有2名工人(查询工人和命令工人):

public class EndpointConfig:IConfigureThisEndpoint,AsA_Worker
{
public void自定义(总线配置生成器)
{
var container=BuildContainer();
builder.UseContainer(c=>c.ExistingLifetimeScope(容器));
builder.UseTransport();
UsePersistence();
建筑商公约()
.DefiningCommandsAs(t=>t.Namespace!=null&&t.Namespace.StartsWith(“ProjectName”)&&t.Namespace.EndsWith(“命令”))
.DefiningEventsAs(t=>t.Namespace!=null&&t.Namespace.StartsWith(“ProjectName”)&&t.Namespace.EndsWith(“事件”))
.DefiningMessagesAs(t=>t.Namespace!=null&&t.Namespace.StartsWith(“ProjectName”)&&t.Namespace.EndsWith(“RequestResponse”))
.definingencryptedproperties(p=>p.Name.StartsWith(“加密”));
RijndaelEncryptionService();
}
...
两个工作进程的配置相同。 除此之外,我在两个Worker中都有UnicastBusConfig:


如果CommandWorker发布事件(从ProjectName.Security.Message或ProjectName.execution.Message namepsace)和QueryWorker处理这些事件,则所有这些都可以正常工作。尽管我在处理由CommandWorker在QueryWorker和CommandWorker(2个订阅者)中发布的相同事件时遇到问题-只调用一个处理程序,并且随机调用哪个处理程序


我是否遗漏了某些内容或误解了发布/订阅功能?感谢您提供的帮助。

您是否可以向我们发送此问题的小副本?您可以在工作两个小时后在中提出问题(可能是:),但乍一看,这对您来说是一个错误?我无法用最少的示例复制它-所有工作都符合预期。Sti不过我会有一个问题。我发现了一个规律性-当CommandWorker获得XCommand时,我得到的是System.InvalidOperationException:找不到消息类型为XCommand的处理程序。尽管如此,命令还是照常处理,并调用了一个事件处理程序。第二次发送XCommand会导致相同的异常,但调用了第二个事件处理程序.您知道此异常的来源吗?您能将代码发送给我们吗?您可以将其发送给支持部门
public class EndpointConfig : IConfigureThisEndpoint, AsA_Worker
{
    public void Customize(BusConfiguration builder)
    {
        var container = BuildContainer();

        builder.UseContainer<AutofacBuilder>(c => c.ExistingLifetimeScope(container));
        builder.UseTransport<AzureServiceBusTransport>();
        builder.UsePersistence<AzureStoragePersistence>();

        builder.Conventions()
            .DefiningCommandsAs(t => t.Namespace != null && t.Namespace.StartsWith("ProjectName") && t.Namespace.EndsWith("Commands"))
            .DefiningEventsAs(t => t.Namespace != null && t.Namespace.StartsWith("ProjectName") && t.Namespace.EndsWith("Events"))
            .DefiningMessagesAs(t => t.Namespace != null && t.Namespace.StartsWith("ProjectName") && t.Namespace.EndsWith("RequestResponse"))
            .DefiningEncryptedPropertiesAs(p => p.Name.StartsWith("Encrypted"));

        builder.RijndaelEncryptionService();
    }
    ...