NServiceBus消息处理程序在异常时不会进入"错误"队列

Ben*_*aan 5 error-handling nservicebus

我有一个样本NServiceBus应用程序来测试水..一切顺利,发送和处理工作正常.

我故意在某个消息处理程序中抛出异常,看看会发生什么 - 但什么都没有.异常被正确记录到控制台,但消息被从队列中拉出,而不是像我期望的那样放在错误队列中.此外,5次重试也没有发生.这是正确的行为吗?

此外,首次指定时,在启动时正确创建了队列.

服务器的配置和引导代码(处理程序所在的位置如下)

配置:

<MsmqTransportConfig
  InputQueue="SiteServer1"
  NumberOfWorkerThreads="1"
  MaxRetries="5"
  ErrorQueue="SiteServer1Errors"
/>
Run Code Online (Sandbox Code Playgroud)

Program.cs中:

var bus = NServiceBus.Configure.With()
  .Log4Net()
  .CastleWindsorBuilder(container)
  .XmlSerializer()
  .MsmqTransport()
  .UnicastBus()
    .LoadMessageHandlers()
  .CreateBus()
  .Start();
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么吗?

Ben*_*aan 5

我修改了引导程序代码以包含

.IsTransactional(true)
Run Code Online (Sandbox Code Playgroud)

在总线配置,现在它正在工作!似乎非交易消息是一次性的.说得通!