我有一个示例 NServiceBus 应用程序来测试水域.. 一切顺利,发送和处理工作正常。
我故意在某个消息处理程序中抛出异常以查看会发生什么 - 但没有任何 react 。异常被正确记录到控制台,但消息被从队列中拉出,而不是像我期望的那样放在错误队列中。此外,5 次重试也没有发生。这是正确的行为吗?
此外,队列在首次指定时在启动时正确创建。
服务器的配置和引导代码(处理程序所在的位置在下面)
配置:
<MsmqTransportConfig
InputQueue="SiteServer1"
NumberOfWorkerThreads="1"
MaxRetries="5"
ErrorQueue="SiteServer1Errors"
/>
程序.cs:
var bus = NServiceBus.Configure.With()
.Log4Net()
.CastleWindsorBuilder(container)
.XmlSerializer()
.MsmqTransport()
.UnicastBus()
.LoadMessageHandlers()
.CreateBus()
.Start();
我在这里错过了什么吗?
最佳答案
我修改了 bootstrap 代码以包含
.IsTransactional(true)
在总线配置上,现在它正在工作!非事务性消息似乎是一次性的。说得通!
关于error-handling - NServiceBus 消息处理程序不会在异常时进入 'error' 队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6928983/