2015-10-01 4 views
6

यह सबसे नज़दीकी पिछले प्रश्न है जो मुझे मिल सकता है: Azure Service Bus Subscription OnMessage not receiving messagesएज़ूर सेवा बस सभी संदेशों को प्राप्त नहीं कर रहा है (केवल ~ 65%)

वही बात मेरे साथ भी होती है। जब मैं विषय का नाम बदलता हूं तो यह थोड़ी देर के लिए काम करता है। तब वह सेवा बस विषय भ्रष्ट है। केवल 65-71% संदेश आ रहे हैं। Subscritption, न ही विषय को हटाने में मदद नहीं करता है। कुछ समय बाद विषय का नाम प्रदूषित हो रहा है। यह वास्तव में वास्तव में बुरा है, क्योंकि मेरे पास यह कहने का कोई तरीका नहीं है कि विषय भ्रष्ट है, सिवाय इसके कि सिस्टम ऐसा नहीं करता है जब संदेश नहीं आते हैं। नए नाम के साथ यादृच्छिक रूप से नया विषय बनाना और फिर एक बिल्कुल खराब समाधान की तरह लगता है।

मैं इसे एक प्रक्रिया में लूप के माध्यम से परीक्षण कर रहा हूं, संदेश भेज रहा हूं, फिर दूसरी प्रक्रिया में एक लूप, प्राप्त करना और गिनना। एक नए विषय के नाम के साथ यह पूरी तरह से काम करता है। और मुझे पता है कि मेरे पास सदस्यता के लिए केवल एक श्रोता है, और यह एक झलक लॉक है, संदेश को पूरा करने की आवश्यकता है।

कोई भी? इसे कैसे हल किया जा सकता है?

अद्यतन: यहां एक गॉचा पाया जा सकता है। मैंने 1 सदस्यता बनाई है और इसके साथ एक कनेक्शन बनाए रखा है; 1 विषय बनाया गया, और बस हर बार 100 बार भेजकर 10 बार फिर से बनाई गई। कोई संदेश खो गया मेरे पास 1 सब्सक्रिप्शन बनाया गया है, और हर बार बस के पुनर्निर्मित होने के लिए बनाया गया एक नया सदस्यता क्लाइंट और 100 संदेश भेजा गया है। संदेश का 50% खोना लगता है कि विषय पिछले सदस्यता क्लाइंट से अवगत है और संदेश दोनों को निपटाया जाता है?

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

सुझाव: वर्ष सदस्यता पर नज़र रखें, और अगर मैं प्रक्रिया पुनः आरंभ करना, एक नई सदस्यता बनाने के? प्रक्रिया नीचे जाने और नई सदस्यता के बीच एक खिड़की छोड़ देता है, जहां संदेश केवल "मृत" सदस्यता में पंप हो जाएंगे। ये संदेश खो जाएंगे। लेकिन इसके बाद कम से कम कोई भी संदेश नई सदस्यता द्वारा प्राप्त किया जाएगा। मैन .. इस समस्या को पहले से निपटाया जाना चाहिए था। मैं इसे सही नहीं कर रहा हूँ। यहां कुछ मार्गदर्शन की सराहना करेंगे।

समाधान: यह सब इस काम के लिए सही उपकरण के बारे में है। इस स्थिति में एक क्यूई की मांग की जाती है, न कि पब/सब। सब कुछ हल हो गया। मैं उपर्युक्त के समान परीक्षण कर रहा हूं, लेकिन इसके बजाय कतार के साथ, और निश्चित रूप से, चूंकि यह निर्णय लिया गया है कि क्लाइंटसाइड जो संदेश प्राप्त करता है, पिछले (मृत) सदस्यताकर्ताओं को नए से संदेश लेने में कोई समस्या नहीं है। एक समय में केवल एक कतार ग्राहक जीवित रहेगा, इसलिए केवल वह ही है जो कतार से संदेश ले सकता है।

+0

अच्छा काम! कृपया अपना समाधान उत्तर के रूप में पोस्ट करें और इसे सही के रूप में स्वीकार करें। इससे लोगों को यह जानने में मदद मिलेगी कि आपके प्रश्न का उत्तर दिया गया है। –

उत्तर

3

समाधान: यह सब नौकरी के लिए सही उपकरण के बारे में है। इस स्थिति में एक क्यूई की मांग की जाती है, न कि पब/सब। सब कुछ हल हो गया।मैं उपर्युक्त के समान परीक्षण कर रहा हूं, लेकिन इसके बजाय कतार के साथ, और निश्चित रूप से, चूंकि यह निर्णय लिया गया है कि क्लाइंटसाइड जो संदेश प्राप्त करता है, पिछले (मृत) सदस्यताकर्ताओं को नए से संदेश लेने में कोई समस्या नहीं है। एक समय में केवल एक कतार ग्राहक जीवित रहेगा, इसलिए केवल वह ही है जो कतार से संदेश ले सकता है।

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