2

我是使用 NServiceBus 的新手,所以我很确定我只是搞砸了我的 pub/sub 功能的配置......

我设置了 2 个订阅者( A & B )来处理相同的事件。我正在使用 MSMQ 进行消息存储。如果我评论 B 的处理程序并且只订阅 A,那么 A 的处理程序只被调用一次(并且只有 1 条消息在 A 的队列中)。

但是,当我取消注释 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());
    }

任何帮助,将不胜感激。

4

1 回答 1

1

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

于 2012-10-19T16:05:52.283 回答