2008-12-17 7 views
6

मैं पथ का उपयोग कर एक दूरस्थ निजी MSMQ कतार से कनेक्ट करने के लिए कोशिश कर रहा हूँ कनेक्ट:एक निजी रिमोट MSMQ कतार

"FormatName:DIRECT=OS:remoteMachineName\Private$\MyQueue" 

और मैं निम्न त्रुटि हो रही है:

"The specified format name does not support the requested operation. For example, a direct queue format name cannot be deleted." 

मैं मैं स्पष्ट रूप से कुछ गलत कर रहा हूँ। हालांकि यह एक स्थानीय कतार का उपयोग कर काम करता है।

मैं Spring.Net's Messaging का उपयोग कर रहा हूं। यहां मेरी कॉन्फ़िगरेशन

<objects xmlns="http://www.springframework.net"> 
    <object id="myQueue" type="Spring.Messaging.Support.MessageQueueFactoryObject, Spring.Messaging"> 
    <property name="Path" value="FormatName:DIRECT=OS:remoteMachineName\Private$\MyQueue"/> 
    </object> 

    <object id="messageQueueTemplate" type="Spring.Messaging.Core.MessageQueueTemplate, Spring.Messaging"> 
    <property name="DefaultMessageQueueObjectName" value="myQueue"/> 
    </object> 

    <object id="messageGateway" type="My.MessageGateway, My.Assembly"> 
    <property name="MessageQueueTemplate" ref="messageQueueTemplate"/> 
    </object> 
</objects> 
+0

आप किसी सक्रिय निर्देशिका डोमेन के भीतर काम कर रहे हैं या कर रहे हैं सर्वर स्टैंडअलोन? –

उत्तर

5

क्या यह एक लेनदेन कतार है? लेनदेन कतार से दूरस्थ पढ़ने संभव नहीं है। शायद वसंत ढांचा यह जांचने का प्रयास करता है कि यह एक लेनदेन कतार है, और यह भी एक ऑपरेशन है जो केवल स्थानीय कतार पर समर्थित है।

कतारों के साथ काम करने की सिफारिश की गई रिमोट कतार में लिखना और स्थानीय कतार से पढ़ना है। एमएसएमक 4.0 (विस्टा और विंडोज 2008) में दूरस्थ लेनदेन पढ़ने समर्थित है (इसलिए मैंने सुना है)।

क्या आप spring.net कोड को डिबबग कर सकते हैं और प्रक्रिया विफल होने पर सटीक कोड देख सकते हैं?

0

मेरी आंखों को मारने वाली पहली चीज़ आपके एंडपॉइंट पते का आवरण है। इस धागे में पोस्ट किए गए कम से कम अन्य सभी उदाहरण या here अलग आवरण का उपयोग करते हैं। दूसरा आप स्ट्रिंग के भीतर बैकस्लाश से बच नहीं रहे हैं।

"FormatName:DIRECT=OS:remoteMachineName\Private$\MyQueue" 

के बजाय कोशिश

"FormatName:Direct=OS:remoteMachineName\\private$\\MyQueue" 

hth, एरिक

+2

बैकस्लाश से बचने से एक सी # एन्कोडिंग चीज है। यह एक्सएमएल विन्यास फाइलों में लागू नहीं होता है। इसके अलावा, केन से infosysblogs.com लिंक बताता है कि केस संवेदनशीलता केवल "स्वरूपनाम" पर लागू होती है और "प्रत्यक्ष" नहीं। – spoulson

0

माइक्रोसॉफ्ट सहायता दस्तावेजों राज्य है कि निजी कतारों स्थानीय कंप्यूटर से केवल "उपलब्ध" हैं:

लोक कतारों को संदेश क्विकिंग नेटवर्क में दोहराया जाता है और संभावित रूप से इसका उपयोग किया जा सकता है नेटवर्क से जुड़े साइटों की ll।

निजी कतार पूरे नेटवर्क में प्रकाशित नहीं हैं। इसके बजाय वे उपलब्ध केवल उन स्थानीय कंप्यूटर पर हैं जिनमें उन्हें शामिल है। निजी कतार केवल उन अनुप्रयोगों द्वारा उपयोग की जा सकती है जो पूर्ण पथ नाम या कतार के लेबल को जानते हैं।

(से: http://msdn.microsoft.com/en-us/library/19ww660c(VS.71).aspx)।

यह वास्तव में थोड़ा अस्पष्ट है!

http://technet.microsoft.com/ja-jp/library/cc753440(WS.10).aspx

एक बहुत अधिक उपयोगी बनाम निजी कतारों लोक का विवरण नहीं है कौन सा:

स्टैक ओवरफ़्लो पर एक और पोस्ट इस लेख का संदर्भ।

+8

प्रारंभिक बिंदु थोड़ा भ्रामक है। निजी कतार दूरस्थ रूप से उपलब्ध हैं, वे बस एक सक्रिय निर्देशिका में प्रकाशित नहीं हैं। एक दूरस्थ निजी कतार तक पहुंचने के लिए, जैसा कि आप कहते हैं, आपको कतार के पूर्ण पथ नाम या लेबल को जानने की आवश्यकता है। –

0

आपका कोशिश कर सही है, लेकिन आप यह दर्शाता है अपने कतार दूरस्थ है या नहीं और व्यवहार है या नहीं अपने ऑब्जेक्ट के लिए दो अन्य संपत्तियों को परिभाषित करने के लिए है:

<object id="myQueue" 
     type="Spring.Messaging.Support.MessageQueueFactoryObject,Spring.Messaging">  
    <property name="Path" value="FormatName:DIRECT=OS:remoteMachineName\Private$\MyQueue"/> 
    <property name="RemoteQueue" value="true"/> 
    <property name="RemoteQueueIsTransactional" value="true"/> 
</object>