MuleSoft - Mule Exception हैंडलिंग
प्रत्येक परियोजना के मामले में, अपवादों के बारे में तथ्य यह है कि वे होने के लिए बाध्य हैं। इसीलिए अपवादों को पकड़ना, वर्गीकृत करना और उन्हें संभालना महत्वपूर्ण है, ताकि सिस्टम / एप्लिकेशन असंगत स्थिति में न छोड़े। एक डिफ़ॉल्ट अपवाद रणनीति है, जो सभी खच्चर अनुप्रयोगों पर अंतर्निहित है। किसी भी लंबित लेन-देन को स्वचालित रूप से रोलबैक करना डिफ़ॉल्ट अपवाद रणनीति है।
खच्चर में अपवाद
असाधारण हैंडलिंग में गहरी गोता लगाने से पहले, हमें यह समझना चाहिए कि तीन बुनियादी सवालों के साथ किस तरह के अपवाद हो सकते हैं, जो किसी गेंदबाज को डिजाइन करते समय एक डेवलपर के पास होने चाहिए।
कौन सा परिवहन महत्वपूर्ण है?
अपवाद हैंडलर को डिजाइन करने से पहले इस प्रश्न की पर्याप्त प्रासंगिकता है क्योंकि सभी परिवहन ट्रांसनेशनलिटी का समर्थन नहीं करते हैं।
File या HTTPलेनदेन का समर्थन नहीं करता है। इसीलिए, यदि इन मामलों में कोई अपवाद होता है, तो हमें इसे मैन्युअल रूप से प्रबंधित करना होगा।
Databasesलेनदेन का समर्थन करें। इस मामले में अपवाद हैंडलर डिजाइन करते समय, हमें यह ध्यान रखना चाहिए कि डेटाबेस लेनदेन स्वचालित रूप से रोलबैक कर सकता है (यदि आवश्यक हो)।
के मामले में REST APIs, हमें ध्यान रखना चाहिए कि उन्हें सही HTTP स्थिति कोड वापस करना चाहिए। उदाहरण के लिए, संसाधन के लिए 404 नहीं मिला।
किस मैसेज एक्सचेंज पैटर्न का उपयोग किया जाना है?
अपवाद हैंडलर डिजाइन करते समय, हमें संदेश विनिमय पैटर्न के बारे में ध्यान रखना चाहिए। समकालिक (अनुरोध-उत्तर) या अतुल्यकालिक (अग्नि-भूल) संदेश पैटर्न हो सकता है।
Synchronous message pattern अनुरोध-उत्तर प्रारूप पर आधारित है, जिसका अर्थ है कि यह पैटर्न एक प्रतिक्रिया की उम्मीद करेगा और जब तक कोई प्रतिक्रिया वापस नहीं होती है या समय समाप्त नहीं होता है तब तक इसे अवरुद्ध कर दिया जाएगा।
Asynchronous message pattern आग-विस्मृत प्रारूप पर आधारित है, जिसका अर्थ है कि यह पैटर्न मानता है कि अनुरोधों को अंततः संसाधित किया जाएगा।
यह किस प्रकार का अपवाद है?
बहुत सरल नियम यह है कि आप इसके प्रकार के आधार पर अपवाद को संभाल लेंगे। यह जानना बहुत महत्वपूर्ण है कि क्या अपवाद एक प्रणाली / तकनीकी समस्या या व्यावसायिक मुद्दे के कारण होता है?
एक अपवाद हुआ system/technical issue (जैसे कि नेटवर्क आउटेज) को स्वचालित रूप से एक रिट्री तंत्र द्वारा नियंत्रित किया जाना चाहिए।
दूसरी ओर, एक अपवाद हुआ by a business issue (जैसे कि अमान्य डेटा) को रिट्री तंत्र लागू करके हल नहीं किया जाना चाहिए क्योंकि यह अंतर्निहित कारण को ठीक किए बिना पुनर्प्रयास करने के लिए उपयोगी नहीं है।
अपवादों को वर्गीकृत क्यों करें?
जैसा कि हम जानते हैं कि सभी अपवाद समान नहीं हैं, अपवादों को वर्गीकृत करना बहुत महत्वपूर्ण है। उच्च स्तर पर, अपवादों को निम्नलिखित दो प्रकारों में वर्गीकृत किया जा सकता है -
व्यापार अपवाद
व्यापार अपवादों की घटना के मुख्य कारण गलत डेटा या गलत प्रक्रिया प्रवाह हैं। इस तरह के अपवाद आमतौर पर प्रकृति में गैर-पुनर्प्राप्ति योग्य होते हैं और इसलिए यह कॉन्फ़िगर करने के लिए अच्छा नहीं हैrollback। यहां तक कि आवेदन भीretryतंत्र का कोई मतलब नहीं होगा क्योंकि यह अंतर्निहित कारण को ठीक किए बिना पुन: प्रयास करने के लिए उपयोगी नहीं है। इस तरह के अपवादों को संभालने के लिए, प्रसंस्करण को तुरंत रोकना चाहिए, और अपवाद को एक मृत पत्र कतार की प्रतिक्रिया के रूप में वापस भेजा गया। एक अधिसूचना भी संचालन के लिए भेजना चाहिए।
गैर-व्यावसायिक अपवाद
गैर-व्यावसायिक अपवादों की घटना के मुख्य कारण सिस्टम इश्यू या तकनीकी समस्या हैं। इस प्रकार के अपवाद प्रकृति में पुनर्प्राप्त करने योग्य हैं और इसलिए इसे कॉन्फ़िगर करना अच्छा हैretry इन अपवादों को हल करने के लिए तंत्र।
अपवाद हैंडलिंग रणनीतियाँ
खच्चर की निम्नलिखित पाँच अपवाद हैंडलिंग रणनीतियाँ हैं -
डिफ़ॉल्ट अपवाद रणनीति
खच्चर अंतर्निहित रूप से इस रणनीति को खच्चर के प्रवाह पर लागू करता है। यह हमारे प्रवाह में सभी अपवादों को संभाल सकता है, लेकिन कैच, चॉइस या रोलबैक अपवाद रणनीति को जोड़कर इसे ओवरराइड भी किया जा सकता है। यह अपवाद रणनीति किसी भी लंबित लेनदेन को वापस ले लेगी और अपवादों को भी लॉग कर देगी। इस अपवाद रणनीति की एक महत्वपूर्ण विशेषता यह है कि यदि कोई लेनदेन नहीं है तो यह अपवाद को भी लॉग करेगा।
डिफ़ॉल्ट रणनीति होने के नाते, खच्चर इसे लागू करता है जब प्रवाह में कोई त्रुटि होती है। हम AnyPoint स्टूडियो में कॉन्फ़िगर नहीं कर सकते।
रोलबैक अपवाद रणनीति
मान लीजिए अगर त्रुटि को ठीक करने के लिए कोई संभावित समाधान नहीं है तो क्या करें? एक समाधान रोलबैक अपवाद रणनीति का उपयोग करना है जो संदेश को पुन: पेश करने के लिए पेरेंट प्रवाह के इनबाउंड कनेक्टर को एक संदेश भेजने के साथ-साथ लेनदेन को वापस करेगा। यह रणनीति भी बहुत उपयोगी है जब हम किसी संदेश को पुन: प्रस्तुत करना चाहते हैं।
Example
यह रणनीति बैंकिंग लेनदेन पर लागू की जा सकती है जहां चेक / बचत खाते में धन जमा हो रहा है। हम यहां रोलबैक अपवाद रणनीति को कॉन्फ़िगर कर सकते हैं क्योंकि यदि लेन-देन के दौरान कोई त्रुटि होती है, तो यह रणनीति प्रसंस्करण को पुन: आरंभ करने के लिए संदेश को वापस प्रवाहित करती है।
अपवाद रणनीति को पकड़ो
यह रणनीति उन सभी अपवादों को पकड़ती है जो इसके मूल प्रवाह के भीतर फेंक दिए जाते हैं। यह मूल प्रवाह द्वारा फेंके गए सभी अपवादों को संसाधित करके Mule की डिफ़ॉल्ट अपवाद रणनीति को ओवरराइड करता है। हम इनबाउंड कनेक्टर्स और पैरेंट फ्लो के अपवादों के प्रचार से बचने के लिए कैच अपवाद रणनीति का उपयोग कर सकते हैं।
यह रणनीति यह भी सुनिश्चित करती है कि अपवाद होने पर प्रवाह द्वारा संसाधित लेन-देन वापस नहीं लुढ़का है।
Example
यह रणनीति उड़ान बुकिंग प्रणाली पर लागू की जा सकती है जिसमें हमारे पास कतार से संदेशों को संसाधित करने के लिए एक प्रवाह है। एक संदेश समृद्ध सीट के असाइनमेंट के लिए संदेश पर एक संपत्ति जोड़ता है और फिर संदेश को दूसरी कतार में भेजता है।
अब यदि इस प्रवाह में कोई त्रुटि होती है, तो संदेश अपवाद को फेंक देगा। यहां, हमारी कैच अपवाद रणनीति एक उपयुक्त संदेश के साथ एक हेडर जोड़ सकती है और उस संदेश को प्रवाह से अगली कतार में धकेल सकती है।
चुनाव अपवाद रणनीति
यदि आप संदेश सामग्री के आधार पर अपवाद को संभालना चाहते हैं, तो विकल्प अपवाद रणनीति सबसे अच्छा विकल्प होगी। इस अपवाद रणनीति का कार्य निम्नानुसार होगा -
- सबसे पहले, यह मूल प्रवाह के भीतर फेंके गए सभी अपवादों को पकड़ता है।
- अगला, यह संदेश सामग्री और अपवाद प्रकार के लिए जाँच करता है।
- और अंत में, यह संदेश को उपयुक्त अपवाद रणनीति के लिए रूट करता है।
च्वाइस अपवाद रणनीति के भीतर परिभाषित कैच या रोलबैक जैसी एक से अधिक अपवाद रणनीति होगी। यदि इस अपवाद रणनीति के तहत कोई रणनीति निर्धारित नहीं की गई है, तो यह संदेश को डिफ़ॉल्ट अपवाद रणनीति में बदल देगा। यह कभी भी कोई कमिटमेंट या रोलबैक या उपभोग की गतिविधियाँ नहीं करता है।
संदर्भ अपवाद रणनीति
यह एक सामान्य अपवाद रणनीति को संदर्भित करता है जिसे एक अलग कॉन्फ़िगरेशन फ़ाइल में परिभाषित किया गया है। मामले में जब कोई संदेश एक अपवाद फेंकता है, तो यह अपवाद रणनीति एक वैश्विक पकड़, रोलबैक या विकल्प अपवाद रणनीति में परिभाषित त्रुटि हैंडलिंग मापदंडों को संदर्भित करेगी। पसंद अपवाद की रणनीति की तरह, यह कभी भी कोई प्रतिबद्ध या रोलबैक नहीं करता है या गतिविधियों का उपभोग नहीं करता है।