2012-06-21 14 views
5

NServiceBusバージョン3.2.2で再試行を無効にすることはできますか?以下の構成を使用してNServiceBus再試行を完全に無効にする方法

、再試行を無効にすることができます。

<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" /> 

このバグのように見えます。再試行の振る舞いはスレッドの数に依存すべきではありません。

答えて

1

MaxRetriesのセマンティクスは「少なくともX回」です。なぜなら、スレッドを同期させるときには少しリラックスできないからです。あなたはまた、あなたの輸送を非トランザクションにすることができます。これは効果的にあなたに各メッセージを試してもらえますが、エラーキューも失われてしまい、失敗したメッセージは永遠に消えてしまいます。

+0

これはすべて、私は長期的な解決策がこれについてはサガを行っていると思っていますが、私は実際のビジネス上の問題について、より多くの文脈が必要です。 –

+0

答えをありがとう。私たちは1秒あたりのトランザクション数が多いです。データがデータベースで利用できないために失敗した各再試行は、別のデータベース往復が無駄になります。我々は、この動作をオフにし、第2レベルの再試行に完全に依存することを望んでいました。 –

関連する問題