【问题标题】:NServiceBus : When using 2 subscribers, 2 messages end up in both queuesNServiceBus :当使用 2 个订阅者时,两个队列中都有 2 条消息
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多