NServiceBus监听器缺少消息

sti*_*mms 1 nservicebus

我刚刚开始使用nservice总线,并试图让出版工作.我有一个听众,似乎缺少一些消息.它配置有

 <MsmqTransportConfig
  InputQueue="InformMessages"
  ErrorQueue="error"
  NumberOfWorkerThreads="5"
  MaxRetries="5"
 />
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果我将NumberOfWorkerThreads设置为1,它会一直错过其他所有消息.对于较大的值,似乎不那么确定.在我的消息处理程序中我有

class MessageHandler : IMessageHandler<ICourseRegister>
{
    public void Handle(ICourseRegister message)
    {
        Console.WriteLine("Message dun got gotted");
        Console.WriteLine("Course name is: " + message.CourseName);
    }

    private IBus bus;
    public IBus Bus
    {
        set { this.bus = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

并且总线配置有

        var bus = NServiceBus.Configure.With()
              .SpringBuilder()
              .XmlSerializer()
              .MsmqTransport()
                  .IsTransactional(true)
                  .PurgeOnStartup(false)
              .UnicastBus()
                  .ImpersonateSender(false)
                  .LoadMessageHandlers()
              .CreateBus()
              .Start();
Run Code Online (Sandbox Code Playgroud)

是否有我需要做的事情和Handler的结束,以便它可以自由准备接收下一条消息或我需要做的一些配置,以便在处理程序繁忙时有一个客户端队列来保留消息.发送消息之间的时间似乎并不重要,它可能是20秒,并且监听器仍然无法获取所有消息.

Udi*_*han 5

看了你发来的解决方案后,我看到了问题所在.

您为两个进程指定了相同的输入队列 - 发布者和订阅者.因此,您有两个进程争夺消息(我认为)您打算只向订阅者发送消息.

给每个进程自己的输入队列,一切都应该与世界一致:-)