2011-08-03 17 views
5

मेरे पास पानी का परीक्षण करने के लिए नमूना NServiceBus अनुप्रयोग है .. सभी ठीक चल रहे हैं, भेजना और हैंडलिंग सही ढंग से काम कर रहा है।NServiceBus संदेश हैंडलर अपवाद पर 'त्रुटि' कतार नहीं जा रहा है

मैंने जानबूझकर एक निश्चित संदेश हैंडलर के भीतर एक अपवाद फेंक दिया है यह देखने के लिए कि क्या होता है - लेकिन कुछ भी नहीं करता है। अपवाद को कंसोल पर सही तरीके से लॉग किया गया है, फिर भी संदेश को कतार से खींचा गया है और त्रुटि कतार में रखा गया है जैसा कि मैं अपेक्षा करता हूं। इसके अलावा, 5 बार फिर से नहीं हुआ था। क्या यह सही व्यवहार है?

इसके अलावा, कतार पहले निर्दिष्ट होने पर स्टार्टअप पर सही ढंग से बनाई गई थी।

config और सर्वर के लिए बूटस्ट्रैप कोड (जहां हैंडलर बसता था नीचे हैं)

config:

<MsmqTransportConfig 
    InputQueue="SiteServer1" 
    NumberOfWorkerThreads="1" 
    MaxRetries="5" 
    ErrorQueue="SiteServer1Errors" 
/> 

Program.cs:

var bus = NServiceBus.Configure.With() 
    .Log4Net() 
    .CastleWindsorBuilder(container) 
    .XmlSerializer() 
    .MsmqTransport() 
    .UnicastBus() 
    .LoadMessageHandlers() 
    .CreateBus() 
    .Start(); 

मैं यहाँ कुछ भी याद आ रही है?

उत्तर

5

मैं शामिल करने के लिए

.IsTransactional(true) 
बस config पर

bootstrapper कोड को संशोधित किया और अब यह काम कर रहा है! ऐसा लगता है कि गैर-लेनदेन संदेश डिस्पोजेबल हैं। समझ में आता है!

+0

मेरा पहला वृत्ति आपको अपनी कतार लेनदेन करने के लिए बताना था। इसे रफू करें! –

1

क्या आप Windows Server 2008 चला रहे हैं? यदि ऐसा है तो आपको इवेंट व्यूअर में इवेंट लॉग मिलेगा, एप्लिकेशन इवेंट लॉग के अंतर्गत -> विंडोज़ -> एमएसएमक्यू - एंड 2 एंड। यह आपकी मशीन पर एमएसएमक्यू उपप्रणाली द्वारा की गई हर कार्रवाई को रिकॉर्ड करेगा।

मुझे लगता है कि एनएसबी ने त्रुटि कतार में संदेश भेजने की कोशिश की है। हालांकि, वास्तव में क्या हैपिंग यह है कि आपकी मशीन पर एमएसएमक्यू उपप्रणाली ने संदेश का उपभोग किया है, लेकिन किसी कारण से इसे त्रुटि कतार में वितरित करने में सक्षम नहीं है।

मैं क्या हो रहा है इसके बारे में एक विचार के लिए एमएसएमक्यू लॉग में देखता हूं।

+0

मैं Win7 चला रहा हूं, हालांकि मैंने 'एप्लिकेशन और सेवा लॉग \ MSMQ \ End2End' के भीतर लॉग सक्षम किए हैं, जो कुछ रोचक डेटा प्रदान करता है, लेकिन त्रुटि कतार को बिल्कुल सूचीबद्ध नहीं करता है। यह SiteServer1 में भेजे गए/प्राप्त किए गए लॉग दिखाता है - लेकिन सफल 'हैंडलर' और हैंडलर के लिए सटीक एक ही लॉग –

संबंधित मुद्दे