如何完全禁用NServiceBus重试

Tho*_*att 5 nservicebus

是否可以在NServiceBus版本3.2.2中禁用重试?

使用以下配置,可以禁用重试:

  <MsmqTransportConfig NumberOfWorkerThreads="1"
                       MaxRetries="0" />

  <SecondLevelRetriesConfig Enabled="false"
                            TimeIncrease="00:00:10"
                            NumberOfRetries="0" />
Run Code Online (Sandbox Code Playgroud)

但是当线程计数设置为20时则不行.在这种情况下,重试消息两次:

  <MsmqTransportConfig NumberOfWorkerThreads="20"
                       MaxRetries="0" />

  <SecondLevelRetriesConfig Enabled="false"
                            TimeIncrease="00:00:10"
                            NumberOfRetries="0" />
Run Code Online (Sandbox Code Playgroud)

这看起来很像一个bug.重试行为不应该取决于线程数.

And*_*und 1

MaxRetries 的语义是“至少 X 次”。这样做的原因是性能,因为在同步线程时我们不能再放松一点了。您还可以使传输成为非事务性的,这将有效地为您提供每条消息一次尝试的机会,但您也会丢失错误队列,因此失败的消息将永远消失。