अपाचे कैमल डिफ़ॉल्ट रूप से एक संदेश में मौजूद सभी शीर्षलेखों को HTTP शीर्षलेखों में अनुवादित करता है। यह बहुत उपयोगी है, लेकिन चूंकि कई घटक आंतरिक स्थिति के लिए हेडर का भी उपयोग करते हैं, बाहरी HTTP कॉल पर आंतरिक जानकारी का रिसाव हो सकता है। उदाहरण, यदि कार्य टाइमर / क्रॉन का उपयोग करके शुरू किया गया था, तो हम तार पर निम्नलिखित HTTP शीर्षलेख भेजते हैं:
http-outgoing-1 >> fireTime: Mon Dec 28 10:14:00 CET 2020
http-outgoing-1 >> jobDetail: JobDetail 'Camel_camel-1.sync': jobClass: 'org.apache.camel.component.quartz.CamelJob concurrentExectionDisallowed: false persistJobDataAfterExecution: false isDurable: false requestsRecovers: false
http-outgoing-1 >> jobInstance: org.apache.camel.component.quartz.CamelJob@4ff90d52
http-outgoing-1 >> jobRunTime: -1
http-outgoing-1 >> mergedJobDataMap: org.quartz.JobDataMap@2338bfe0
http-outgoing-1 >> nextFireTime: Mon Dec 28 10:15:00 CET 2020
http-outgoing-1 >> refireCount: 0
http-outgoing-1 >> scheduledFireTime: Mon Dec 28 10:14:00 CET 2020
http-outgoing-1 >> scheduler: org.quartz.impl.StdScheduler@17a5f565
http-outgoing-1 >> trigger: Trigger 'Camel_camel-1.syncJob': triggerClass: 'org.quartz.impl.triggers.CronTriggerImpl calendar: 'null' misfireInstruction: 1 nextFireTime: Mon Dec 28 10:15:00 CET 2020
http-outgoing-1 >> triggerGroup: Camel_camel-1
http-outgoing-1 >> triggerName: syncJob
... (actual needed HTTP headers:)
http-outgoing-1 >> Connection: Keep-Alive
http-outgoing-1 >> User-Agent: Apache-HttpClient/4.5.12 (Java/11.0.6)
मुझे पता है कि HTTP कॉल का प्रयास करने से पहले मैं सभी शीर्षलेखों को हटा सकता हूं। चूंकि मेरे अन्य मार्ग भी मेरे आंतरिक शीर्षलेख जोड़ते हैं जिनकी मुझे आवश्यकता है, कॉल भेजने से पहले बिंदु पर मेरे लिए सभी "जंक" शीर्षलेखों को हटाना आसान नहीं है, लेकिन मेरे आंतरिक लोगों को रखना (जो HTTP कॉल बीटीडब्ल्यू में भी समाप्त होता है। )
मुझे पता है कि मैं इसके लिए संपत्तियों का उपयोग कर सकता हूं। मुझे पता है कि मैं संदेश के शीर्षलेखों को स्वचालित रूप से HTTP शीर्षलेख के रूप में जोड़ने के लिए अक्षम कर सकता हूं। इस मामले में मुझे यकीन नहीं है कि मुझे मैन्युअल रूप से शीर्षलेख जोड़ने की ज़रूरत है जो HTTP (जैसे उपयोगकर्ता-एजेंट) के लिए आवश्यक हैं।
हेडर का अन्य लगातार दुरुपयोग यह है कि यदि आप 2 HTTP कॉल करते हैं और हेडर को साफ़ करना भूल जाते हैं, तो पहली कॉल के आउटपुट हेडर पहले के इनपुट हेडर बन जाएंगे।
किसी को भी इस मुद्दे से बचने के लिए एक अच्छा कामकाज मिला है?
1 उत्तर
इस प्रकार HTTP-आधारित समापन बिंदु (ऊंट-http, ऊंट-http4, ऊंट-जेट्टी, ऊंट-रेस्टलेट, ऊंट-सीएक्सएफ, ऊंट-सीएक्सएफआर) डिफ़ॉल्ट रूप से प्रक्रिया शीर्षलेख हैं (आप HeaderFilterStrategy का उपयोग करके इस व्यवहार को अनुकूलित कर सकते हैं)।
उपभोक्ता:
CamelHttp*
शीर्षलेख के साथ एक संदेश में बनाता है जो आने वाले संदेश की स्थिति, मूल संदेश से सभी HTTP शीर्षलेख, और यूआरएल विकल्प (केवल जेटी) रिकॉर्ड करता है।निर्माता: HTTP प्रोड्यूसर एंडपॉइंट के व्यवहार को नियंत्रित करने के लिए एक्सचेंज को लक्ष्य संदेश प्रारूप में
CamelHttp*
हेडर के साथ परिवर्तित करता है,Camel*
हेडर को फ़िल्टर कर दिया जाता है क्योंकि वे आंतरिक के लिए अभिप्रेत हैं उपयोग, और अन्य सभी शीर्षलेखcontent-length, content-type, cache-control, connection, date, pragma, trailer, transfer-encoding, upgrade, via, warning
के अपवाद के साथ HTTP शीर्षलेख में परिवर्तित हो जाते हैं।
कॉल भेजने से पहले मेरे लिए सभी "जंक" हेडर को हटाना आसान नहीं है, लेकिन मेरे आंतरिक लोगों को रखना (जो HTTP कॉल बीटीडब्ल्यू में भी समाप्त होता है।)
HTTP हेडर के रूप में लीक होने से बचने के लिए आप अपने आंतरिक को Camel
के साथ उपसर्ग कर सकते हैं। यदि आपको उनमें से कुछ को HTTP शीर्षलेख के रूप में चाहिए, तो आप कॉल से पहले किसी भिन्न कुंजी पर मैन्युअल रूप से मैपिंग कर सकते हैं।
इस मामले में मुझे यकीन नहीं है कि मुझे मैन्युअल रूप से शीर्षलेख जोड़ने की ज़रूरत है जो HTTP (जैसे उपयोगकर्ता-एजेंट) के लिए आवश्यक हैं।
आपको उनकी आवश्यकता नहीं है।
हेडर का अन्य लगातार दुरुपयोग यह है कि यदि आप 2 HTTP कॉल करते हैं और हेडर को साफ़ करना भूल जाते हैं, तो पहली कॉल के आउटपुट हेडर पहले के इनपुट हेडर बन जाएंगे।
इस मामले में, आपको कम से कम .removeHeaders("CamelHttp*)
वाले कंट्रोल हेडर को हटा देना चाहिए।
संबंधित सवाल
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।