2009-06-18 14 views
7

मैं कैसे बता सकता हूं कि एक दूरस्थ संदेश कतार exists है? दस्तावेज़ीकरण में कहा गया है कि "मौजूदा" विधि रिमोट मशीनों के लिए काम नहीं करती है।परीक्षण करना एक रिमोट संदेशक्यूयू मौजूद है (सी # का उपयोग करके)

निम्नलिखित मान्य नहीं है (मुझे पता है के बाद से मैं कतार में संदेश भेजने के लिए सक्षम हूँ कतार पथ सही है):

 
if (!MessageQueue.Exists(@"FormatName:Direct=TCP:192.168.2.58\Private$\MyQueue")) 
    throw new InvalidOperationException("Queue does not exist"); 

समस्या यह है कि एक नेटवर्क पता नहीं है पर एक संदेश भेज इसके पीछे एक सुनवाई कतार एक अपवाद का कारण नहीं है। अमान्य कतार पते के लिए फेंक दिया गया अपवाद हमारे आवेदन के लिए महत्वपूर्ण है।

उत्तर

3

इस बारे में एक लेख है:

फ्रैंक वैकल्पिक दृष्टिकोण इस तरह के प्रशासन कतारों के साथ नकारात्मक स्वीकृतियां संदेश के रूप में अन्य सुविधाओं MSMQ प्रदान करता है, का उपयोग करने के लिए है।

क्या होना चाहिए है कि या तो:

  • संदेश गंतव्य कतार
  • एक नकारात्मक पावती (NACK) के एक वर्ग के साथ प्रशासन कतार को लौटा दी जाएगी करने के लिए सफलतापूर्वक वितरित किया जाएगा " गंतव्य कतार मौजूद नहीं है। " (MQMSG_CLASS_NACK_BAD_DST_Q) वैकल्पिक रूप से आप नकारात्मक स्रोत जर्नलिंग का उपयोग कर सकते हैं और, वितरित करने में विफलता पर, संबंधित "मृत-पत्र संदेश" सिस्टम कतार में NACK के समान वर्ग को देखना चाहिए।

सारांश में, की जांच नहीं करते, तो कतार मौजूद है, लेकिन बजाय संभाल संदेश की नॉन-डिलीवरी इसे बाहर कर देना चाहिए कतार मौजूद नहीं करता है।

http://blogs.msdn.com/johnbreakwell/archive/2008/07/31/checking-if-msmq-queues-exist-is-hard-work-so-should-you-bother.aspx

0

क्या होगा यदि रिमोट क्यू को किसी तीसरे पक्ष द्वारा नियंत्रित किया गया था जहां आपके पास कोई नियंत्रण नहीं है?

आपको दूरस्थ जानकारी पर भरोसा करने के बजाय किसी प्रकार का टाइमआउट चेक बेहतर होगा।

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

  • कोई संबंधित समस्या नहीं^_^