2016-02-23 5 views
6

के बीच अंतर मैं HystrixCommand और HystrixObservableCommand के बीच अंतर को समझने की कोशिश कर रहा हूं। कारण मैं उलझन में हूं हिस्टिक्स कॉमैंड में एक निरीक्षण() या टूब्सर्जेबल() विधि है जो क्रमशः गर्म और ठंडे अवलोकन को उत्सर्जित करती है। तो HystrixObservableCommand बनाने की आवश्यकता क्या थी। अगर मैं पूरी तरह से गैर अवरुद्ध कॉल पर काम कर रहा हूं तो मुझे किस का उपयोग करना चाहिए? क्यूं कर?HystrixCommand और HystrixObservableCommand

उत्तर

9
Javadocs से

:

HystrixCommand

यह आदेश अनिवार्य रूप से एक को अवरुद्ध आदेश है लेकिन अगर निरीक्षण() के साथ प्रयोग किया एक नमूदार मुखौटा प्रदान करता है

HystrixObservableCommand

यह आदेश एक purel के लिए इस्तेमाल किया जाना चाहिए वाई गैर-अवरुद्ध कॉल पैटर्न। इस आदेश के कॉलर को रन() विधि द्वारा लौटे पर्यवेक्षकों की सदस्यता लेंगी।

अंतर यह है कि HystrixCommand डिफ़ॉल्ट रूप से एक अवरुद्ध प्रतिमान का समर्थन करता है, लेकिन यह भी एक मुखौटा के माध्यम से observables के माध्यम से गैर-अवरुद्ध व्यवहार प्रदान करता है, जबकि HystrixObservableCommand एक गैर अवरुद्ध सेटअप के लिए विशेष रूप से लागू किया गया था। मुझे पूरी तरह से यकीन नहीं है कि यह दो कार्यान्वयन में क्यों विभाजित है, लेकिन मुझे लगता है कि इसका कारण यह है कि मूल रूप से HystrixCommand ने गैर-अवरोधन का समर्थन नहीं किया। इसे a year or so after the original implementation के बारे में जोड़ा गया था। पूरी तरह से गैर-अवरुद्ध हिस्टिक्स कक्षा लिखने के लिए अभी क्लीनर हो सकता था।

यदि आप केवल गैर-अवरुद्ध कॉल के साथ काम कर रहे हैं, तो आपको संभवतः HystrixObservableCommand का उपयोग करना चाहिए। बेन क्रिस्टेनसेन, Hystrix devs में से एक, this post:

में यह सार अच्छी तरह से हालांकि, अगर आप अवरुद्ध कॉल लपेटकर कर रहे हैं, तो आप सिर्फ HystrixCommand उपयोग करने के साथ छड़ी चाहिए के रूप में है कि क्या इसके लिए बनाया गया है और यह चल रहा है चूक सब कुछ एक अलग थ्रेड में। का उपयोग कर HystrixCommand.observe() आपको समवर्ती, async संरचना प्रदान करेगा जो आप ढूंढ रहे हैं।

HystrixObservableCommand एसिंक, गैर-अवरुद्ध पर्यवेक्षकों को लपेटने के लिए है जो अतिरिक्त धागे की आवश्यकता नहीं है।

4

निक DeFazio, HystrixObservableCommand रैप observables कि एक से अधिक आइटम का उत्सर्जन कर सकते हैं के एक कार्यान्वयन के जवाब देने के लिए इसके अतिरिक्त, जबकि HystrixCommand,, एक से अधिक आइटम का उत्सर्जन नहीं होगा तब भी जब observe() या .toObservable()जो केवल एकल लपेटकर रहे हैं लागू मूल्य run() विधि द्वारा पुनः प्राप्त किया गया।

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