हाँ, आप की जरूरत MSMQ स्थानीय स्तर पर स्थापित किसी दूरस्थ कतार में लिखने के लिए। यदि आप एक निजी कतार में लिख रहे हैं, तो this page पर एक नज़र डालें जिसमें कतार नाम को प्रारूपित करने के तरीके पर उपयोगी जानकारी है। यदि आप किसी दूरस्थ लेन-देन की कतार के लिए लिख रहे हैं, तो आप सुनिश्चित करें कि आप सही ढंग से (बिंदु 5)
1. जब दूरस्थ कतारों के साथ काम करने, machinename\private$\queuename
प्रारूप में कतार का नाम काम नहीं करता है। इसका परिणाम "अवैध कतार पथ" त्रुटि में होता है।
2. कतार का नाम FormatName:Direct=OS:machinename\\private$\\queuename
के रूप में उल्लेख किया जाना चाहिए।
यह आवश्यक है क्योंकि कतार का उपयोग आंतरिक रूप से नाम वाक्यविन्यास प्रारूप का उपयोग करके किया जाता है। अन्य अनुकूल प्रतिनिधित्व को स्वरूपनाम में परिवर्तित किया गया है और फिर इसका उपयोग किया जाता है। रिमोट कतारों के साथ काम करते समय, कतार नाम को हल करने के लिए एक एडी है, दोस्ताना नाम काम नहीं करेगा। विवरण के लिए दस्तावेज देखें।
उदाहरण के लिए।
MessageQueue rmQ = new MessageQueue
("FormatName:Direct=OS:machinename\\private$\\queue");
rmQ.Send("sent to regular queue - Atul");
3. पिछले बिंदु के आगे, ध्यान दें कि स्वरूपनाम केस संवेदनशील है। यदि आप FORMATNAME:Direct=OS:machinename\\private$\\queuename
के रूप में पहले स्ट्रिंग का उल्लेख करते हैं, तो यह काम नहीं करेगा। हैरानी की बात है कि इस मामले में कोई त्रुटि नहीं है। स्ट्रिंग का "FormatName" भाग एकमात्र मामला संवेदनशील भाग लगता है। अन्य अलग-अलग मामले में दिखाई दे सकते हैं। उदाहरण के लिए। आप "प्रत्यक्ष" लिख सकते हैं।
4. यदि आप मशीन के आईपी पते का उपयोग करना चाहते हैं तो वाक्यविन्यास FormatName:Direct=TCP:ipaddress\\private$\\queuename
होगा।
उदाहरण के लिए।
MessageQueue rmQ = new MessageQueue
("FormatName:Direct=TCP:121.0.0.1\\private$\\queue");
rmQ.Send("sent to regular queue - Atul");
5. कतार उदाहरण आप कोड कतार आप के लिए संदेश भेजने के लिए कोशिश कर रहे हैं के साथ मैच चाहिए में बनाने के लेन-देन संबंधी गुण। तो पहले के उदाहरणों में, मैं गैर-लेनदेन कतार में संदेश भेज रहा था। एक लेन-देन संबंधी कतार में भेजने के लिए, कोड
MessageQueue rmTxnQ = new MessageQueue
("FormatName:Direct=OS:machinename\\private$\\queue");
rmTxnQ.Send("sent to Txn queue - Atul", MessageQueueTransactionType.Single);
होगा व्यवहार गुण मेल नहीं खाते, संदेश वितरित नहीं किया जाएगा। आश्चर्यजनक हिस्सा फिर से है, मुझे कोई त्रुटि नहीं मिली, और संदेश गायब हो गया
6. अंत में, जब आप दूरस्थ कतार में संदेश भेजते हैं, तो आपकी मशीन पर एक अस्थायी आउटगोइंग कतार बनाई जाती है। इसका उपयोग के मामले में किया जाता है, रिमोट कतार अनुपलब्ध है। यदि आप कंप्यूटर प्रबंधन कंसोल (compmgmt) पर जाते हैं।एमएससी), और सेवाओं और अनुप्रयोगों का विस्तार/ संदेश कतार/आउटगोइंग कतार, आप इन कतारों को देखेंगे। कंसोल के दाहिने तरफ राज्य को (कनेक्ट या नहीं) और अगली हॉप के लिए आईपी पता (एसएस) सहित विवरण दिखाएगा।
हाँ, कि मैं क्या सोचा है । मैं बस इसे किसी और से सुनना चाहता था। मैं निजी कतारों का उपयोग कर रहा हूं (पहले से ही प्रारूप भाग किया गया है)। ग्रिफफाइंडर के लिए एक अंक! –
उपरोक्त सेटिंग्स (अधिकार और एमएसएमक्यू स्थापना) के अनुसार परिवर्तन किए जाने के बाद: queue.send(): ठीक काम कर रहा है। लेकिन या तो queue.receive() या queue.getMessageEnumerator2() काम नहीं कर रहा है। क्या तुम मेरी मदद कर सकते हो?? मैं इसे अपनी स्थानीय मशीन (एमएसएमक्यू घटक स्थापित) में परीक्षण कर रहा हूं। – watraplion
@ वाटर्राप्लियन आपको एक नया प्रश्न पूछना चाहिए। – stuartd