2014-12-30 15 views
7

पर कनेक्शन विफलता के मामले में कैशिंग को सावधानी से संभालने या यहां तक ​​कि कैशिंग छोड़ने के लिए मैंने अपने स्प्रिंग ऐप में कैशिंग सक्षम की है और मैं उद्देश्य को पूरा करने के लिए रेडिस का उपयोग करता हूं। हालांकि, जब भी कोई कनेक्शन विफलता होती है, तो ऐप काम करना बंद कर देता है जबकि मुझे लगता है कि यह बेहतर था कैशिंग छोड़ें और सामान्य निष्पादन प्रवाह के साथ आगे बढ़ें।रेडिस के साथ स्प्रिंग कैश - रेडिस

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

यहां मुझे अपवाद मिला है।

Caused by: org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool 

उत्तर

6

स्प्रिंग फ्रेमवर्क 4.1 से ही, एक ऐसी CacheErrorHandler है कि आप ऐसे अपवादों को संभालने के लिए लागू कर सकते हैं। अधिक जानकारी के लिए to the javadoc देखें।

आप इसे @Configuration कक्षा CachingConfigurerSupport से बढ़ाकर पंजीकृत कर सकते हैं (errorHandler() देखें)।

+0

आपके सुझाव के लिए बहुत बहुत धन्यवाद। मेरी '@ कॉन्फ़िगरेशन' कक्षा पहले से ही SpringBootServletInitializer को विस्तारित करती है, इसलिए, मैंने सीधे '@ कॉन्फ़िगरेशन' कक्षा से सीधे कैशइरर हैंडलर को कार्यान्वित करने का प्रयास किया। हालांकि, ऐसा लगता है कि RedisConnectionFailureException जैसी किसी भी चीज़ को संभालने में प्रतीत नहीं होता है। –

+0

आपने 'SpringBootServletInitializer' के संदर्भ में वास्तव में कहां देखा है? मैंने 'कैशिंग कॉन्फिगरर सपोर्ट' लिखा - इसके लिए आपको स्प्रिंग बूट 1.2 (स्प्रिंग 4.1) की आवश्यकता है। –

+0

कैशइरर हैंडलर केवल कैश ऑपरेशंस के दौरान उपयोग किया जाता है। एक Redis कनेक्शन विफलता उच्च हो सकता है? –

0

स्टीफन ने जो भी उल्लेख किया है, वही है, मैंने कोशिश पकड़ने की कोशिश में त्रुटि का उपभोग करके किया है। फॉल बैक मैकेनिज्म जोड़ना जहां रेडिस ऊपर नहीं है या डेटा मौजूद नहीं है, तो मैं डेटा को डीबी से प्राप्त करता हूं। (बाद में अगर मुझे एक मिल जाए तो मैं रेडिस में एक ही डेटा जोड़ता हूं, अगर यह स्थिरता बनाए रखने के लिए है।)

0

स्टीफन निकोल द्वारा सुझाए गए कैशइरर हैंडलर उपयोगी है। लेकिन यह लालसा से कनेक्शन बनाने में विफल होने पर मदद नहीं करता है।

कैश विधि जैसे कैश विधि अभी भी RedisConnectionFailureException के साथ विफल हो जाती है।

0

मैं वसंत बूट के साथ बिल्कुल उसी के लिए देख रहा था, यह here मेरे लिए काम किया।