【发布时间】:2012-10-05 12:45:54
【问题描述】:
我是使用 NServiceBus 的新手,所以我很确定我只是搞砸了我的 pub/sub 功能的配置...
我设置了 2 个订阅者 ( A & B ) 来处理相同的事件。我正在使用 MSMQ 进行消息存储。如果我评论 B 的处理程序并且只订阅 A,那么 A 的处理程序只会被调用一次(并且 A 的队列中只有 1 条消息)。
但是,当我取消注释 B 订阅者中的处理程序以处理相同的事件时。 A 和 B 都在他们的队列中得到两个完全相同的消息,这导致每个处理程序运行两次。
我正在使用 NServiceBus 3.2.0.0,每个事件订阅者都在单独的项目中并在他们自己的 NServiceBus 主机中运行。
这是我对 Bus 的设置...
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());
}
任何帮助将不胜感激。
【问题讨论】:
-
Ninject 之前遇到过 NServiceBus 问题:tech.groups.yahoo.com/group/nservicebus/message/6253 不确定是否仍然相关。也许尝试另一个对象构建器提供程序。
-
请同时提供您的发布者的配置。
-
我的猜测是您在每个订阅者中都有两个处理程序,这是真的吗?
-
原来是滥用ninject。我还在我的解决方案中使用了 EventStore,所以当我在第一个实例完成提交之前注入第二个 EventStore 实例时,它重新发布了未提交的第一个事件。
-
你能把这个作为答案,以便我们结束这个问题吗?
标签: nservicebus