2013-12-13 11 views
5

के बाद पुनः कनेक्ट करें हम सेवा स्टैक के रेडिस क्लाइंट के ब्लॉकिंगडेक्यू का उपयोग कर रहे हैं ताकि इसे संसाधित किए जाने तक कुछ डेटा जारी रखा जा सके। बुला कोड की तरहसर्विस स्टैक रेडिस रीडिस सर्वर रीबूट

using (var client = ClientPool.GetClient()) 
      return client.As<TMessage>().Lists[_channel].BlockingDequeue(timeout); 

सर्वर होस्टिंग Redis को पुन: प्रारंभ किया गया है, BlockingDequeue के लिए कनेक्शन ज़ोंबी जाने के लिए और कभी नहीं लौटने तक क्लाइंट अनुप्रयोग पुनरारंभ लग रहा है।

हमने ब्लॉकिंगडेक्यू के साथ-साथ पूलडकनेक्शन मैनेजर पर टाइमआउट सेट करने का प्रयास किया है, लेकिन न तो मदद की है, मैं अनुमान लगा रहा हूं क्योंकि टाइमआउट सर्वर पक्ष पर लागू होता है।

क्या इस प्रकार की गलती सहनशीलता सर्विस स्टैक में बनाई गई है और हम इसे याद कर रहे हैं?

या ऐसा कुछ है जो हमारे कार्यान्वयन को संभालना चाहिए? यदि ऐसा है तो क्या कोई अनुशंसित दृष्टिकोण है?

उत्तर

1

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

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