5

NServiceBus バージョン 3.2.2 で再試行を無効にすることはできますか?

次の構成を使用して、再試行を無効にすることができます。

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

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

ただし、スレッド数が 20 に設定されている場合はそうではありません。この場合、メッセージは 2 回再試行されます。

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

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

これはバグのように見えます。再試行の動作は、スレッド数に依存してはなりません。

4

1 に答える 1

1

MaxRetriesのセマンティクスは「少なくともX回」です。スレッドの同期に関しては、もう少しリラックスすることはできないため、この理由はパフォーマンスです。トランスポートを非トランザクションにすることもできます。これにより、メッセージごとに1回の試行が効果的に行われますが、エラーキューも失われるため、失敗したメッセージは永久に失われます。

于 2012-06-25T09:58:04.177 に答える