NServiceBus:使用2个订阅者时,两个队列中都有2条消息

NServiceBus:使用2个订阅者时,两个队列中都有2条消息,nservicebus,Nservicebus,我刚开始使用NServiceBus,所以我很确定我只是把发布/订阅功能的配置搞砸了 我已经设置了两个订户(A&B)来处理同一事件。我正在使用MSMQ存储消息。如果我对B的处理程序进行注释并且只订阅A,那么A的处理程序只调用一次(并且A的队列中只有1条消息) 但是,当我取消注释B订阅服务器中的处理程序以处理同一事件时。A和B在它们的队列中得到两条完全相同的消息,这导致每个处理程序运行两次 我使用的是NServiceBus 3.2.0.0,每个事件订阅者都在单独的项目中,并在各自的NServiceB

我刚开始使用NServiceBus,所以我很确定我只是把发布/订阅功能的配置搞砸了

我已经设置了两个订户(A&B)来处理同一事件。我正在使用MSMQ存储消息。如果我对B的处理程序进行注释并且只订阅A,那么A的处理程序只调用一次(并且A的队列中只有1条消息)

但是,当我取消注释B订阅服务器中的处理程序以处理同一事件时。A和B在它们的队列中得到两条完全相同的消息,这导致每个处理程序运行两次

我使用的是NServiceBus 3.2.0.0,每个事件订阅者都在单独的项目中,并在各自的NServiceBus主机中运行

这是我的巴士设置

    private IBus CreateBus()
    {
        return Configure.With()
            .NinjectBuilder(this.Kernel)
            .Log4Net()
            .MsmqTransport()
            .PurgeOnStartup(true)
            .UnicastBus()
            .LoadMessageHandlers()
            .CreateBus()
            .Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
    }
专用IBus CreateBus()
{
返回Configure.With()
.NinjectBuilder(this.Kernel)
.Log4Net()
.MsmqTransport()
.PurgeOnStartup(正确)
.UnicastBus()
.LoadMessageHandlers()
.CreateBus()
.Start(()=>Configure.Instance.ForInstallationOn().Install());
}

任何帮助都将不胜感激。

事实证明,这是对ninject的滥用。我还在解决方案中使用EventStore,因此当我在第一个实例完成提交之前注入第二个EventStore实例时,它会重新发布未提交的第一个事件。

Ninject以前与NServiceBus有过问题:不确定是否仍然相关。也许可以尝试另一个对象生成器提供程序。请同时提供发布服务器的配置。我猜每个订阅服务器中都有两个处理程序,是吗?这是对ninject的误用。我还在解决方案中使用EventStore,因此当我在第一个实例完成提交之前注入第二个EventStore实例时,它重新发布了未提交的第一个事件。您能否将此作为答案,以便我们结束此问题?