क्या त्रुटि स्थिति कोड के आधार पर वसंत पुनः प्रयास (https://github.com/spring-projects/spring-retry) में RetryPolicy सेट करना संभव है? जैसे मैं HttpServerErrorException
पर HttpStatus.INTERNAL_SERVER_ERROR
स्थिति कोड के साथ पुनः प्रयास करना चाहता हूं, जो 503 है। इसलिए इसे अन्य सभी त्रुटि कोडों को अनदेखा करना चाहिए - [500 - 502] और [504 - 511]।क्या HttpStatus स्थिति कोड के आधार पर वसंत-पुनः प्रयास में RetryPolicy सेट करना संभव है?
7
A
उत्तर
5
RestTemplate
setErrorHandler
विकल्प और DefaultResponseErrorHandler
डिफ़ॉल्ट है।
इसका कोड लगता है:
public void handleError(ClientHttpResponse response) throws IOException {
HttpStatus statusCode = getHttpStatusCode(response);
switch (statusCode.series()) {
case CLIENT_ERROR:
throw new HttpClientErrorException(statusCode, response.getStatusText(),
response.getHeaders(), getResponseBody(response), getCharset(response));
case SERVER_ERROR:
throw new HttpServerErrorException(statusCode, response.getStatusText(),
response.getHeaders(), getResponseBody(response), getCharset(response));
default:
throw new RestClientException("Unknown status code [" + statusCode + "]");
}
}
तो, आप अपने खुद के कार्यान्वयन कि विधि अपने RetryPolicy
आसपास वांछित स्थिति कोड को आसान बनाने के लिए प्रदान कर सकते हैं।
संबंधित मुद्दे
- 1. क्या UIImageView की छवि की स्थिति सेट करना संभव है?
- 2. बोतल में HTTP स्थिति कोड सेट करना?
- 3. क्या nginx में proxy_pass गेटवे डाउन होने पर HTTP स्थिति कोड को वापस करना संभव है?
- 4. क्या NSAttributedString में आधार रेखा समायोजित करना संभव है?
- 5. क्या ट्विस्ट में सॉकेट पर टाइमआउट सेट करना संभव है?
- 6. क्या प्रति उपयोगकर्ता आधार पर ASP.NET Owin सुरक्षा कुकी का ExpireTimeSpan सेट करना संभव है?
- 7. क्या मूल्य के आधार पर हाईचार्ट्स डेटा लेबल को स्थिति में रखना संभव है?
- 8. सेट प्रतिक्रिया स्थिति कोड
- 9. क्या स्विफ्ट गुणों पर वॉचपॉइंट सेट करना संभव है?
- 10. क्या वीआईएम के साथ सी ++ कोड प्रारूपित करना संभव है?
- 11. http.X पर http स्थिति कोड सेट करें?
- 12. ऊंचाई के आधार पर एलिमेंट चौड़ाई सेट करना सीएसएस
- 13. क्या स्क्रीन चौड़ाई के आधार पर बूटस्ट्रैप पॉपओवर की स्थिति बदलना संभव है?
- 14. क्या ईवेंट हैंडलिंग के लिए डब्ल्यूपीएफ में संसाधन शब्दकोश के पीछे कोड सेट करना संभव है?
- 15. क्या अनाम कार्यों में ब्रेकपॉइंट सेट करना संभव है?
- 16. क्या साइट्स.google.com वेबसाइटों पर कोड हाइलाइटिंग प्रदान करना संभव है?
- 17. घटक पर स्थिति सेट करना DidMount()
- 18. कोड के आधार पर, मैं
- 19. क्या CSS3 बॉक्स-छाया में पारदर्शिता सेट करना संभव है?
- 20. क्या एडाप्टर को रैखिक लेआउट में सेट करना संभव है?
- 21. सीएसएस - पाठ-चौड़ाई के आधार पर पैडिंग/मार्जिन सेट करना?
- 22. क्या टेक्स्टमैट में पायथन कोड-पूर्णता लागू करना संभव है?
- 23. डेटा.table अद्यतन स्थिति के आधार पर समूह में अंतिम तत्व
- 24. क्या एंड्रॉइड मैनिफेस्ट में कोड शामिल/आयात करना संभव है?
- 25. क्या एंड्रॉइड एप्लिकेशन में कोड इंजेक्ट करना संभव है?
- 26. क्या UILabel में एकाधिक रंग सेट करना संभव है?
- 27. क्या प्रतिशत में चयन तत्व चौड़ाई सेट करना संभव है?
- 28. क्या Stream.parallel() में धागे की प्राथमिकता सेट करना संभव है?
- 29. क्या सफारी एक्सटेंशन में प्रॉक्सी सेटिंग्स सेट करना संभव है?
सीधे नहीं, लेकिन यदि आप सर्वर का आविष्कार कैसे कर रहे हैं, इसके बारे में अधिक संदर्भ प्रदान कर सकते हैं (उदाहरण के लिए, यदि आप स्प्रिंग इंटीग्रेशन आउटबाउंड गेटवे का उपयोग कर रहे हैं या आप सीधे अपने कोड से 'RestTemplate' का उपयोग कर रहे हैं), तो हम शायद एक समाधान का सुझाव देने में सक्षम हो। –
मैंने RestTemplate को बढ़ाया और RetryTemplate के साथ उनके आसपास के कुछ तरीकों को ओवरराइड किया। मैं उपरोक्त github लिंक पर दिए गए एक उदाहरण का पालन कर रहा हूं, जैसा कि ... SimpleRetry नीति नीति = नया SimpleRetryPolicy(); policy.setMaxAttempts (5); policy.setRetryableExceptions (नई कक्षा [] {HttpServerErrorException.class}); स्प्रिंग रेस्ट टेम्पलेट http स्टेटस त्रुटि कोड 500 - 511 के लिए 'HttpServerErrorException.class' रिपोर्ट करता है, लेकिन, मैं 503 और 504 पर पुनः प्रयास करना चाहता हूं। –
अभी के लिए, मैं doWithRetry (RetryContext संदर्भ) में RetryContext से फेंकने खींच रहा हूं और त्रुटि संदेश पढ़ रहा हूं - context.getLastThrowable()। getMessage(), फिर 503 या 504 के लिए खोज रहे हैं। ऐसा करने के लिए एक बेहतर तरीका होना चाहिए, मुझे लगता है। –