2009-09-09 13 views
7

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

मेरी समस्या यह है कि जब कोई संदेश कतार को हिट करता है तो सेवा प्रारंभ नहीं होती है। सेवा आईआईएस में होस्ट की जाती है, और इसलिए आईआईएस को अनुरोध प्राप्त होने तक इसे तत्काल नहीं किया जाता है। अगर मैं सेवा पर ब्राउज़ करता हूं तो यह कतार में संदेशों को संसाधित करता है, लेकिन जाहिर है यह कतार को संसाधित करने की मेरी वांछित विधि नहीं है!

मुझे उम्मीद है कि मुझे सेवा कार्यान्वयन को बदलने या आईआईएस सेटअप बदलने की जरूरत है, लेकिन मुझे नहीं पता कि कहां या क्या बदला जाए।

अद्यतन

किसी को वास्तव में WCF अधिक MSMQ उपयोग करता है? मैंने यह थोड़े समय के लिए काम किया था - मैंने एक ही सर्वर पर अलग वेबसाइट पर बाध्यकारी सक्षम किया, विचित्र रूप से - लेकिन अब यह किसी भी तरह से फिर से काम करना बंद कर दिया है।

कतार में कोई संदेश होने पर सेवा की सक्रियता के साथ मेरी एकमात्र समस्या है। वर्तमान में कतार केवल तभी प्रक्रिया होती है जब सेवा तत्काल हो, उदा। जब मैं .svc फ़ाइल ब्राउज़ करता हूं। मेरे पास net.msmq प्रोटोकॉल एप्लिकेशन पर सक्षम है, और मेरे पास net.msmq बाध्यकारी साइट पर सक्षम है ... क्या मुझे कुछ और करने की ज़रूरत है?

उत्तर

5

आपको स्पष्ट रूप से गैर HTTP सक्रियण के लिए आईआईएस को कॉन्फ़िगर करने की आवश्यकता है। मैं अपने सिर के शीर्ष के सभी विवरण नहीं जानता लेकिन मूल रूप से आपको net.msmq बाध्यकारी सक्रियण को कॉन्फ़िगर करने और सक्षम करने के लिए appcmd का उपयोग करने की आवश्यकता है।

चेक this blogpost या this screencast आपको सभी विवरण देना चाहिए।

2

मुझे विश्वास है कि WCF से अधिक बाध्यकारी MSMQ का उपयोग कर अपनी समस्याओं के लिए मुख्य रूप से आईआईएस के आसपास थे।

मैं Windows XP/सर्वर 2003 का उपयोग आईआईएस 6.

आईआईएस के साथ Windows 7 या Server 2008 का उपयोग के साथ समस्याओं का कोई अंत नहीं 7.5 सब कुछ अच्छी तरह से काम करता है के लिए किया था।

एमएसएमक्यू को एक प्रबंधित सेवा/विंडोज सेवा या आईआईएस के बजाए स्टैंडअलोन एप्लिकेशन के रूप में चलाने का एक बेहतर सुझाव है।

0

एक विकल्प यह है कि इसे विंडोज सेवा के रूप में होस्ट करें। चूंकि एक कतार पर एक संदेश रखा गया है, इसलिए आईआईएस स्वचालित रूप से WAS को सक्रिय नहीं करता है।
एक और विकल्प एक साधारण विंडोज सेवा बनाना है जो निर्दिष्ट समय के बाद इस सेवा को पिंग करता है। हमने उसी सेवा पर पर एक और अनुबंध का खुलासा किया है, बिना IsOneWay = true (क्योंकि यह ऑपरेशन कतारों के साथ सहभागिता नहीं करेगा)। फिर एक विंडोज सेवा बनाई जो कुछ निश्चित अंतराल के बाद डब्ल्यूसीएफ सेवा यूआरएल को पिंग करता है, जो सुनिश्चित करता है कि डब्ल्यूएएस प्रक्रिया हमेशा सक्रिय होती है और क्यूईएफ क्यूई पर एक संदेश के रूप में संदेश उठाता है।

साथ ही, यह सुनिश्चित करें कि सेवा http & net.msmq दोनों पर भी होस्ट की गई है।

मैं नेट का उपयोग कर एमएसएमक्यू के साथ डब्ल्यूसीएफ को लागू करने के लिए एक चरण-दर-चरण मार्गदर्शिका के लिए एक अच्छा लेख आया।MSMQ बाध्यकारी:
Setup MSMQ with WCF using Net.Msmq binding

संबंधित मुद्दे