2012-06-21 17 views
5

Yeniden denemeyi devre dışı bırakmak mümkün mü NServiceBus, sürüm 3.2.2? Aşağıdaki yapılandırmayı kullanmaNServiceBus nasıl devre dışı bırakılır tamamen yeniden deneniyor

, yeniden deneme devre dışı bırakılabilir:

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

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

Ama iplik sayısı Bu durumda 20'ye ayarlandığında, mesaj iki kez denenir değil:

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

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

Bu bir hataya çok benziyor. Yeniden deneme davranışı iş parçacığı sayısına bağlı olmamalıdır.

cevap

1

MaxRetries semantiği "En az X kez" dir. Bunun sebebi, performansımızın senkronizasyonuna gelince biraz daha rahat edemeyeceğimiz için performanstır. Ayrıca taşımacılık işlemlerinizi gerçekleştiremezsiniz, bu işlem size her mesaj için bir tane denemenizi sağlar, ancak hata sıralarını kaybedersiniz, böylece başarısız mesajlar sonsuza dek gider.

+0

Tüm bunlar, uzun vadeli çözümün bunun için bir destanla gittiğini düşünüyorum ama size daha fazla yardımcı olmak için gerçek iş sorunlarınızla ilgili daha fazla içeriğe ihtiyacım olduğunu söyledi. –

+0

Cevabınız için teşekkürler. Saniyede yüksek seviyede işlem var. Veritabanında veri bulunmadığından başarısız olan her yeniden deneme, başka bir veritabanı gidiş dönüşü boşa harcanıyor. Bu davranışı devre dışı bırakmayı umuyorduk ve tamamen ikinci seviye denemelere güveniyoruz. –