2011-01-26 11 views
6

को कैसे निकालना है आउटगोइंग कतार को शुद्ध करने का कोई तरीका है। ऐसा प्रतीत नहीं होता है कि मैं इसे एमएमसी स्नैप-इन के साथ कर सकता हूं और जब मैं इसे कोड में शुद्ध करने का प्रयास करता हूं तो मुझे Format name is invalid त्रुटि मिलती है जो कंप्यूटर संदेश भेज रहा है, मौजूद नहीं है, इसलिए उन्हें कभी नहीं भेजा जाएगा, हालांकि कतारों ने एमएसएमक्यू के लिए अधिकतम स्टोरेज स्पेस भर दिया है, इसलिए जब भी मेरा एप्लिकेशन एक और संदेश भेजने की कोशिश करता है तो मुझे insufficient resources अपवाद मिलता है।

मैं निम्न स्वरूपों की कोशिश की है और वे सभी अपवाद के साथ असफल format name is invalid

प्रत्यक्ष = ओएस: कम्प्यूटर \ निजी $ \ queuename
ओएस: कम्प्यूटर \ निजी $ \ queuename
\ निजी $ \ queuename कंप्यूटरएक एमएसएमक्यू आउटगोइंग कतार

+0

आउटगोइंग कतार क्या है? – Andrey

+3

यह कतार है जो संदेशों को किसी अन्य कंप्यूटर पर भेजे जाने से पहले सहेजा जाता है। – Brian

उत्तर

6

आपको इसे एमएमसी स्नैप-इन से मैन्युअल रूप से शुद्ध करने में सक्षम होना चाहिए। जब यह स्टोरेज सीमा तक पहुंच जाता है तो एमएसएमक्यू बहुत कठोर हो जाता है, इसलिए बहुत से ऑपरेशन "अनुमति अस्वीकार" और इस तरह की चीजों के साथ असफल हो जाएंगे।

लंबी अवधि का समाधान स्पष्ट रूप से कॉन्फ़िगरेशन को संशोधित करना है ताकि आपके विशेष उपयोग पैटर्न के लिए पर्याप्त संग्रहण स्थान हो।

संपादित करें: आप व्यवस्थापक क्षमताओं और दूरस्थ कतारों से संबंधित प्रबंधित API में एक सीमा में भाग ले रहे हैं। इनगो रैमर द्वारा this आलेख पर एक नज़र डालें। इसमें एक पी-इनवॉक उदाहरण भी शामिल है।

+1

+1 अच्छा लेख जुड़ा हुआ है। – Filburt

+3

अच्छा लेख, हालांकि इसे आजमाने की कोशिश नहीं की। क्योंकि स्क्रीन पर छवियों में से एक ने मुझे दिखाया कि मैं गलत क्या कर रहा था। मैं कतार नाम पर क्लिक कर रहा था और वहां दिखाने के लिए शुद्ध विकल्प को छोड़कर। गहराई से जाना था और "कतार संदेश" पर क्लिक करना था – Brian

1

आप FORMATNAME:DIRECT=OS:computer\PRIVATE$\queuename को आजमा सकते हैं।

3

यह कामयाब आउटगोइंग कतार शुद्ध करने के लिए कोड संभावित उपयोग किया जाता है:

using (var msgQueue = new MessageQueue(GetPrivateMqPath(queueName, remoteIP), QueueAccessMode.ReceiveAndAdmin)) 
{ 
    msgQueue.Purge(); 
} 

जिसमें GetPrivateMqPath है:

if (!string.IsNullOrEmpty(remoteIP)) 
    return String.Format("FORMATNAME:DIRECT=TCP:{0}\\private$\\{1}", remoteIP, queueName); 
else 
    return @".\private$\" + queueName; 

QueueAccessMode.ReceiveAndAdmin निवर्तमान कतार में इंगित करता है।