एंटीपैटर्न: JavaScript नीति का इस्तेमाल करके, तीसरे पक्ष के सर्वर में डेटा लॉग करें

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

लॉग करना, समस्याओं को डीबग करने का एक बेहतरीन तरीका है. एपीआई के बारे में जानकारी हेडर, फ़ॉर्म पैरामीटर, क्वेरी पैरामीटर, डाइनैमिक वैरिएबल वगैरह जैसे अनुरोध बाद में बताया गया है. जानकारी को मैसेज प्रोसेसर पर स्थानीय तौर पर लॉग किया जा सकता है (सिर्फ़ प्राइवेट क्लाउड के लिए Apigee Edge) या Sumo Logic, Splunk या Loggly जैसे तीसरे पक्ष के सर्वर का इस्तेमाल किया जा सकता है.

एंटीपैटर्न

नीचे दिए गए कोड में, JavaScript नीति में मौजूद httpClient ऑब्जेक्ट का इस्तेमाल करके, डेटा को सूमो लॉजिक सर्वर. इसका मतलब यह है कि लॉगिंग की प्रक्रिया वास्तव में अनुरोध/जवाब को प्रोसेस किया जा रहा है. इस तरीके से प्रॉडक्ट की परफ़ॉर्मेंस पर बुरा असर पड़ता है, क्योंकि इससे प्रॉडक्ट की प्रोसेसिंग में बढ़ोतरी होती है समय होता है, जिससे कुल समय के इंतज़ार का समय बढ़ता है.

LogData_JS:

<!-- /antipatterns/examples/1-4.xml -->
<Javascript async="false" continueOnError="false" enabled="true" timelimit="2000" name="LogData_JS">
  <DisplayName>LogData_JS</DisplayName>
  <ResourceURL>jsc://LogData.js</ResourceURL>
</Javascript>

LogData.js:

<!-- /antipatterns/examples/1-5.xml -->
var sumoLogicURL = "...";
httpClient.send(sumoLogicURL);
waitForComplete();

अपराधी waitForComplete() को कॉल कर रहा है, जिससे कॉलर का कॉल निलंबित हो जाता है जब तक जानकारी इकट्ठा करने की प्रोसेस पूरी नहीं हो जाती. इसे एसिंक्रोनस बनाना ही एक मान्य पैटर्न है इस कॉल को खत्म करके.

असर

  • JavaScript की नीति के ज़रिए लॉगिंग कोड को एक्ज़ीक्यूट करने से एपीआई के लोड होने में लगने वाला समय बढ़ जाता है अनुरोध.
  • एक साथ किए जाने वाले अनुरोधों की वजह से, मैसेज प्रोसेसर पर असर डालने वाले संसाधनों पर ज़ोर पड़ सकता है अन्य अनुरोधों की प्रोसेसिंग पर बुरा असर डाल रहा हो.

सबसे सही तरीका

  • लॉग सर्वर या तीसरे पक्ष के लॉग में डेटा ट्रांसफ़र/लॉग करने के लिए, MessageLogging नीति का इस्तेमाल करें Sumo Logic, Splunk, Loggly जैसी मैनेजमेंट सेवाएं.
  • मैसेज लॉग करने की नीति का सबसे बड़ा फ़ायदा यह है कि इसे क्लाइंट फ़्लो, जो अनुरोध करने वाले क्लाइंट ऐप्लिकेशन को रिस्पॉन्स वापस भेजने के बाद शुरू होता है.
  • पोस्ट क्लाइंट फ़्लो में इस नीति के परिभाषित होने से, लॉगिंग गतिविधि और अनुरोध/रिस्पॉन्स प्रोसेसिंग को इस तरह से किया जाता है कि इंतज़ार के समय को पूरा न किया जाए.
  • अगर JavaScript के ज़रिए लॉग इन करने के लिए कोई खास ज़रूरत या वजह है (न कि पोस्ट क्लाइंट फ़्लो विकल्प के बारे में ऊपर बताया गया है), तो इसे एसिंक्रोनस रूप से किया जाना चाहिए. दूसरे शब्दों में, अगर httpClient ऑब्जेक्ट का इस्तेमाल किया जा रहा है, तो आपको यह पक्का करना होगा कि JavaScript waitForComplete को लागू नहीं किया गया

इसके बारे में और पढ़ें