2012-06-21 16 views
5

È possibile disattivare i tentativi in ​​NServiceBus, versione 3.2.2?Come disabilitare completamente i tentativi di NServiceBus

Utilizzando la seguente configurazione, tentativi può essere disabilitato:

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

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

Ma non quando il numero di thread è impostato su 20. In questo caso, il messaggio viene ripetuta due volte:

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

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

Questo sembra molto un insetto. Il comportamento dei tentativi non dovrebbe dipendere dal numero di thread.

risposta

1

La semantica di MaxRetries è "Almeno X volte". La ragione di questo è la performance dal momento che non possiamo essere un po 'più rilassati quando si tratta di sincronizzare i nostri thread. Potresti anche rendere il tuo trasporto non transazionale questo ti darà un tentativo per ogni messaggio, ma perderai anche la coda degli errori, quindi i messaggi falliti spariranno per sempre.

+0

Tutto ciò detto ho pensato che la soluzione a lungo termine sta andando con una saga per questo, ma ho bisogno di più contesto per quanto riguarda il problema aziendale reale per aiutarti ulteriormente? –

+0

Grazie per la risposta. Abbiamo un alto livello di transazioni al secondo. Ogni nuovo tentativo fallisce perché i dati non sono disponibili nel database è un altro round trip del database sprecato. Speravamo di disattivare questo comportamento e di affidarci completamente ai tentativi di secondo livello. –