如何完全禁用NServiceBus重试

时间:2012-06-21 11:01:04

标签: nservicebus

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

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

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

  <SecondLevelRetriesConfig Enabled="false"
                            TimeIncrease="00:00:10"
                            NumberOfRetries="0" />

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

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

  <SecondLevelRetriesConfig Enabled="false"
                            TimeIncrease="00:00:10"
                            NumberOfRetries="0" />

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

1 个答案:

答案 0 :(得分:1)

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