6

मेरे आवेदन में, मुझे बाहरी अंतराल पर कॉल करने की आवश्यकता है और यदि यह बहुत धीमी है तो फ़ॉलबैक सक्रिय हो जाता है।मेरे सर्किट ब्रेकर फ़ॉलबैक को कॉल करने के लिए एकीकरण परीक्षण को कैसे कार्यान्वित किया जाए?

@FeignClient(name = "${config.name}", url = "${config.url:}", fallback = ExampleFallback.class) 
public interface Example { 
@RequestMapping(method = RequestMethod.GET, value = "/endpoint", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) 
    MyReturnObject find(@RequestParam("myParam") String myParam); 
} 

और इसकी फ़ॉलबैक क्रियान्वयन:

@Component 
public Class ExampleFallback implements Example { 

    private final FallbackService fallback; 

    @Autowired 
    public ExampleFallback(final FallbackService fallback) { 
     this.fallback = fallback; 
    } 

    @Override 
    public MyReturnObject find(final String myParam) { 
     return fallback.find(myParam); 
    } 

इसके अलावा, सर्किट ब्रेकर के लिए एक कॉन्फ़िगर किया गया समय समाप्त: hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 5000

निम्नलिखित कोड कैसे मेरे ऐप की तरह दिखता है का एक उदाहरण है

मेरा सर्किट ब्रेक काम कर रहा है या नहीं, यह जांचने के लिए कि मैं अपना एंडपॉइंट (उस मामले में मजाक कर रहा हूं) एकीकरण परीक्षण कैसे कार्यान्वित कर सकता हूं धीमा या अगर यह 4xx या 5xx की तरह एक त्रुटि देता है?

मैं वसंत बूट का उपयोग कर रहा स्प्रिंग बादल (बहाना करना + Hystrix)

उत्तर

1

नोट मैं donot पता बहाना करना या Hystrix साथ 1.5.3।

मेरी राय में एक स्वचालित एकीकरण को कार्यान्वित करने में समस्याग्रस्त है जो Feign + Hystrix के विभिन्न कार्यान्वयन को अनुकरण करता है - यह कार्यान्वयन विवरण किसी भी समय बदल सकता है। कई प्रकार की विफलताएं हैं: प्राथमिक-एंडपॉइंट पहुंच योग्य नहीं है, अवैध डेटा (यानी एक HTML प्रारूप को एक्सएमएल डेटा प्राप्त करते समय, एक विशेष प्रारूप में एक्सएमएल डेटा प्राप्त करते समय), डिस्क-पूर्ण, .....

यदि आप नकली हैं एक अंतराल आप फेगिन + हाइस्ट्रिक्स के कार्यान्वयन की धारणा को समझते हैं कि एंडपॉइंट एक त्रुटिपूर्णता में कैसे व्यवहार करता है (यानी वापसी शून्य, कुछ विशिष्ट त्रुटि कोड लौटाएं, प्रकार Xyz का अपवाद फेंक दें ....)

मैं केवल एक स्वचालित बनाउंगा एक वास्तविक प्राथमिक-बिंदु के साथ एकीकरण परीक्षण जिसमें कभी भी पहुंचने योग्य यूआरएल और मॉक-फॉलबैक-एंडपॉइंट नहीं है जहां आप सत्यापित करते हैं कि संसाधित डेटा नकली से आता है। यह स्वचालित परीक्षण मानता है कि "नेटवर्क कनेक्शन बहुत धीमा" का संचालन आपके ऐप के दृष्टिकोण से "url-notfound" जैसा ही है।

अन्य सभी परीक्षणों के लिए मैं Feign + Hystrix के चारों ओर एक पतली रैपर इंटरफ़ेस तैयार करूंगा जहां आप Feign + Hystrix का मज़ाक उड़ाते हैं। इस तरह आप उदाहरण के लिए स्वचालित रूप से परीक्षण कर सकते हैं यदि आपको प्राथमिक इंटरफ़ेस से 200bytes प्राप्त होते हैं और फिर एक एक्सपेटियन मिलता है तो क्या होता है।

बाह्य निर्भरताओं को छिपाने के बारे में विवरण के लिए onion-architecture

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