2012-06-21 13 views
5

Czy można wyłączyć ponawianie w programie NServiceBus, wersja 3.2.2?Jak całkowicie wyłączyć ponawianie prób NServiceBus

Korzystanie następującą konfigurację prób można wyłączyć:

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

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

Ale gdy liczba gwint jest ustawiony na 20. W tym przypadku, wiadomość zostanie ponowiona dwukrotnie:

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

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

ten wygląda trochę jak błąd. Ponowne działanie nie powinno zależeć od liczby wątków.

Odpowiedz

1

Semantyka MaxRetries to "Co najmniej X razy". Powodem tego jest wydajność, ponieważ nie możemy być nieco bardziej zrelaksowani, jeśli chodzi o synchronizację naszych wątków. Możesz także uczynić swój transport nietransakcyjnym, co pozwoli ci wypróbować każdą wiadomość, ale stracisz także kolejkę błędów, więc nieudane wiadomości znikną na zawsze.

+0

Wszystko to powiedziawszy, myślę, że długoterminowe rozwiązanie wymaga sagi, ale potrzebuję więcej kontekstu dotyczącego faktycznego problemu biznesowego, aby pomóc ci dalej? –

+0

Dzięki za odpowiedź. Mamy wysoki poziom transakcji na sekundę. Każda kolejna próba, która się nie powiedzie, ponieważ dane nie są dostępne w bazie danych, jest zmarnowana na inny cykl podróży w bazie danych. Mieliśmy nadzieję na wyłączenie tego zachowania i poleganie na ponownych próbach na drugim poziomie. –

Powiązane problemy