हर कोई यहाँ समाधान प्रदान करने में एक शानदार काम किया है, और बस समाप्त होने से इस समस्या को अपने आप को मैं में अपने ही 2c फेंक और समाधान दिखाना चाहते थे जूझ मैं उस काम के साथ बहुत अच्छी तरह से आया था।
queue.SetPermissions("Everyone", MessageQueueAccessRights.FullControl, AccessControlEntryType.Set);
:
सबसे पहले जब कतार मुझे यकीन है कि मैं इतनी तरह अनुमतियों को खोलने बनाने बनाई गई है (मैं हमारे आवेदन के संदर्भ में कतार सुरक्षा को लेकर चिंतित नहीं हूँ ... यह एक गणना निर्णय होता है)
उस लाइन के बिना मुझे सभी प्रकार की पहुंच योग्य त्रुटियां मिलेंगी और कंप्यूटर प्रबंधन स्क्रीन से कतार ब्राउज़ भी नहीं कर सका।कि संयोग से यदि आप करने के लिए होता है और आप कैसे कतार है कि आप बस करने के लिए पहुँच नहीं है को मारने के लिए सोच रहे हैं:
- बंद करो सेवा "संदेश कतार"
- गोटो "C: \ Windows \ System32 \ MSMQ \ भंडारण \ lqs "
- ओपन नोटपैड में प्रत्येक फ़ाइल और अपने कतार नाम देखने के
- कि फ़ाइल हटाएँ और मैसेजिंग सेवा
पुनः आरंभ (यह सबसे अधिक संभावना है कि हाल ही में संशोधित किया गया था फ़ाइल हो जाएगा)
बेस क्लास एफ बनाएं या अपनी कतार संदेश आइटम और इसे चिह्नित करें [Serializable]। आवेदन लोड कैश पर अपने सभी संदेश कुछ इस तरह का उपयोग कर प्रकार की एक सूची:
var types = typeof(QueueItemBase).Assembly
.GetTypes()
.Where(t => typeof(QueueItemBase).IsAssignableFrom(t) && t.IsAbstract == false)
.ToArray();
...
// Create and cache a message formatter instance
_messageFormatter = new XmlMessageFormatter(types);
अब आप संदेश प्राप्त करना शुरू करने के लिए तैयार कर रहे हैं। मेरी पहली प्रवृत्ति संदेश के लिए मतदान करना था, लेकिन एपीआई वास्तव में इस तरह काम करना पसंद नहीं करता है। तो मैं एक पृष्ठभूमि धागा बनाता हूं और अवरुद्ध विधि को कॉल करता हूं कतार पर प्राप्त होता है जो संदेश उपलब्ध होने के बाद वापस आ जाएगा। वहाँ संदेश डीकोड से के रूप में सरल है:
var message = queue.Receive();
if (message == null)
continue;
// Tell the message about our formatter containing all our message types before we
// try and deserialise
message.Formatter = _messageFormatter;
var item = message.Body as QueueItemBase;
और वह सब आप अच्छी तरह से लागू करने के लिए MSMQ एकीकरण typesafe जरूरत होना चाहिए!
स्रोत
2014-05-28 23:28:18
बिल्कुल सही! बस मैं क्या चाहता था। – NLV