मैं एक निजी कतार में संदेश भेज रहा ग # के माध्यम से:एमएसएमक्यू सी # - एसीके के माध्यम से संदेश प्राप्त हुआ?
MessageQueue msgQ = new MessageQueue(@".\private$\aaa");
msgQ.Formatter = new XmlMessageFormatter(new[] { typeof (String) });
msgQ.Send(msg);
यह काम करता है और मैं कतार में संदेश क्यों दिखाई देता है।
हालांकि, क्या एसीके प्राप्त करने का कोई तरीका है कि संदेश सफलता के साथ कतार पर गया है?
nb
BeginPeek
और PeekCompleted
एक घटना है जो जब एक संदेश कतार या जब समय की निर्दिष्ट अंतराल समाप्त हो गया है में उपलब्ध हो जाता है उठाया जाता है। यह नहीं मेरी मदद कर रहा है क्योंकि मुझे यह जानने की आवश्यकता है कि संदेश है जिसे मैंने भेजा है msmq द्वारा प्राप्त किया गया था। BeginPeek
भी उठाया जाएगा यदि कोई अन्य कतार में एक संदेश दर्ज किया गया है। और आखिरी चीज़ जो मैं चाहता हूं वह BeginPeek
के माध्यम से जांचना है - यह संदेश कौन से है।
मैं यह कैसे कर सकता हूं?
NB2
या हो सकता है मैं msgQ.Send(msg);
के बाद से चिंता करने की है, तो संदेश नहीं डाला गया था अपवाद बढ़ा देंगे की जरूरत नहीं है ....?
मेरा आईआईएस और एमएसएमक कंप्यूटर एक ही मशीन हैं। अगर ऐसा है, तो आने वाली कतार में जाने से पहले आउटगोइंग कतार में कोई संदेश संग्रहीत किया जाता है? इसके अलावा, लेनदेन में पूरा होने के लिए 1 से अधिक ऑपरेशन नहीं हैं ... तो आपको लगता है कि लेनदेन संबंधी कतार की सिफारिश क्यों नहीं की जाती है? –
ठीक है, जैसा कि मेरे उत्तर में लिंक में इंगित किया गया है, यदि गैर-लेनदेन कतार संसाधित करते समय कतार प्रसंस्करण सेवा क्रैश हो जाती है, तो वर्तमान संदेश खो जाता है। यदि यह ठीक है तो गैर-लेनदेन का उपयोग करें। दूसरे प्रश्न के लिए, यदि सभी संचार स्थानीय हैं, तो आउटगोइंग कतार का उपयोग नहीं किया जाना चाहिए। –