2012-12-15 11 views
5

मैं वर्तमान में सिग्नलआर और एएसपी.NET एमवीसी 4 उपकरण का उपयोग कर रहा हूं। मैं RabbitMQ से संदेश ले रहा हूं, और संक्षेप में जब भी कोई नया संदेश कतार को हिट करता है तो सिग्नलआर के माध्यम से प्रसारित करने की आवश्यकता होती है। समस्या सामान्य उपयोग के तहत है, ऐसी जगह नहीं है जहां आईआईएस के भीतर एक लंबी जीवित वस्तु रह सकती है। मुझे लगभग 1000 संदेश मिल रहे हैं, इसलिए बाहरी कतार निगरानी सेवा/ऐप से अनुरोध करके आईआईएस में संदेश को धक्का देने का मानक दृष्टिकोण मेरे आईआईएस को काफी मार देगा।मैं आईआईएस/एएसपी.Net के भीतर एक लंबी जीवित वस्तु कैसे बना सकता हूं?

मेरे पास पृष्ठभूमि थ्रेड पर सिंगलटन उदाहरण बनाने का सामान्य विचार है। यह सुनिश्चित नहीं है कि आईआईएस में ऐसा करने का सबसे अच्छा तरीका क्या है, यदि एप्लिकेशन मर जाता है तो सिंगलटन स्वचालित रूप से फिर से बनाया जाएगा।

+0

ऑटोफैक जैसे आईओसी कंटेनर आपको कुछ निर्भरताओं को सिंगलेट के रूप में कॉन्फ़िगर करने देते हैं - यह आपके ऐपडोमेन में एक ही उदाहरण बनाए रखेगा और आप जहां भी चाहें वहां से इसे एक्सेस कर सकते हैं। – blaster

उत्तर

1

क्या आप सोच रहे हैं कि आपके पास पृष्ठभूमि थ्रेड में कुछ होगा जो हर बार संदेशों की जांच करेगा?

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

अपने आवेदन के IdleTimeout के लिए देखें। यदि आईआईएस आपके वेब एप को आपके बैकग्राउंड वर्कर/क्वार्ट्ज जॉब में अपने सिंगलटन को सोने के लिए सोता है तो भी सो जाता है। यदि आप IdleTimeout 0 पर सेट करते हैं तो आपका एप्लिकेशन कभी सो नहीं जाएगा।

यदि आप Global.asax.cs में अपना जॉब/कार्यकर्ता शामिल करते हैं तो एप्लिकेशन_स्टार्ट() आपका वेब ऐप हमेशा शुरू होता है जब आपका वेब ऐप करता है।

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

यदि आप किसी अन्य कारण से ऐप क्रैश करते हैं तो वही सौदा। आपको अपना वेब ऐप फिर से शुरू करने के लिए कुछ चाहिए।

आशा है कि मदद करता है!

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

  • कोई संबंधित समस्या नहीं^_^