java अपाचे कैमल वास्तव में क्या है?




apache-camel soa (16)

ऐसे कई ढांचे हैं जो हमें मैसेजिंग में समस्याओं को हल करने और हल करने के लिए सुविधा प्रदान करते हैं। ऐसा एक उत्पाद अपाचे कैमल है।

अधिकांश सामान्य समस्याओं में समाधान पैटर्न के रूप में बुलाए गए समाधान साबित हुए हैं। मैसेजिंग के लिए डिज़ाइन पैटर्न एंटरप्राइज़ इंटीग्रेशन पैटर्न (ईआईपी) है जो यहां अच्छी तरह से समझाया गया here । अपाचे ऊंट हमें ईआईपी का उपयोग करके हमारे समाधान को लागू करने में मदद करता है।

एकीकरण ढांचे की ताकत ईआईपी या अन्य पैटर्न, परिवहन और घटकों की संख्या और विकास की आसानी के माध्यम से हमें सुविधा प्रदान करने की क्षमता है जिस पर अपाचे ऊंट सूची के शीर्ष पर खड़ा है

प्रत्येक फ्रेमवर्क के अपने फायदे हैं अपाचे ऊंट की कुछ विशेष विशेषताएं निम्नलिखित हैं।

  1. यह कई डीएसएल अर्थात् जावा डीएसएल और स्प्रिंग एक्सएमएल आधारित डीएसएल में कोडिंग प्रदान करता है, जो लोकप्रिय हैं।
  2. उपयोग करने के लिए आसान उपयोग और सरल।
  3. फ्यूज आईडीई एक ऐसा उत्पाद है जो आपको यूआई के माध्यम से कोड करने में मदद करता है

मुझे समझ में नहीं आता कि वास्तव में Camel क्या करता है।

यदि आप 101 शब्दों में ऊंट के लिए एक परिचय दे सकते हैं:

  • यह वास्तव में क्या है
  • जावा में लिखे गए एप्लिकेशन के साथ यह कैसे बातचीत करता है?
  • क्या यह ऐसा कुछ है जो सर्वर के साथ मिलकर जाता है?
  • क्या यह एक स्वतंत्र कार्यक्रम है?

कृपया बताएं कि कैमल क्या है।


संक्षेप में:

जब सिस्टम को कनेक्ट / एकीकृत करने की आवश्यकता होती है, तो आपको शायद कुछ डेटा स्रोत से कनेक्ट करने की आवश्यकता होगी और फिर इस डेटा को अपनी व्यावसायिक आवश्यकताओं से मेल खाने के लिए संसाधित करना होगा।

ऐसा करने के क्रम में:

1) आप कस्टम प्रोग्राम विकसित कर सकते हैं जो ऐसा करेगा (समय लेने वाला और समझने में मुश्किल हो सकता है, अन्य डेवलपर के लिए बनाए रख सकता है)

2) वैकल्पिक रूप से, आप अपाचे कैमल का मानकीकृत तरीके से ऐसा करने के लिए उपयोग कर सकते हैं (इसमें आपके लिए पहले से ही जुड़े कनेक्टर हैं, आपको बस इसे सेट अप करने और अपनी तर्क-प्रक्रिया प्रक्रिया को प्लग करने की आवश्यकता है):

ऊंट आपको मदद करेगा:

  1. किसी भी स्रोत / प्रारूप से डेटा का उपभोग करें
  2. इस डेटा को संसाधित करें
  3. किसी भी स्रोत / प्रारूप में आउटपुट डेटा

अपाचे कैमल का उपयोग करके आप अपने सिस्टम को किसी अन्य डेवलपर को समझना / बनाए रखना / विस्तार करना आसान बना देंगे।

अपाचे कैमल एंटरप्राइज़ इंटीग्रेशन पैटर्न के साथ विकसित किया गया है। पैटर्न आपको सिस्टम को एक अच्छे तरीके से एकीकृत करने में मदद करते हैं :-)


सादे अंग्रेजी में, ऊंट को कई बॉयलर प्लेट कोड के बिना (कई) चीजें मिलती हैं।

बस आपको एक परिप्रेक्ष्य देने के लिए, नीचे दिया गया जावा डीएसएल एक आरईएसटी एंडपॉइंट तैयार करेगा जो उत्पादों की सूची वाले एक्सएमएल को स्वीकार करने में सक्षम होगा और इसे कई उत्पादों में विभाजित करेगा और इसके साथ ब्रांडप्रोसेसर की प्रोसेस विधि का आह्वान करेगा। और बस जोड़कर .parallelProcessing (टिप्पणी किए गए भाग को नोट करें) यह सभी उत्पाद ऑब्जेक्ट्स को समानांतर प्रक्रिया करेगा। (उत्पाद वर्ग जेएक्सबी / एक्सजेसी एक्सएसडी से उत्पन्न जावा स्टब है जो इनपुट एक्सएमएल तक ही सीमित है।) यह कोड (कुछ ऊंट निर्भरताओं के साथ) को काम मिल जाएगा जो जावा कोड की 100 लाइनों को लेता है।

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.split(stax(Product.class))
/*.parallelProcessing()*/
.process(itemDeltaProcessor);

मार्ग आईडी और लॉगिंग कथन जोड़ने के बाद

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.routeId("Item-DeltaRESTRoute")
.log(LoggingLevel.INFO, "Item Delta received on Item-DeltaRESTRoute")
.split(stax(Product.class))
.parallelProcessing()
.process(itemDeltaProcessor);

यह सिर्फ एक नमूना है, ऊंट केवल आरईएसटी अंत बिंदु से कहीं अधिक है। बस प्लग करने योग्य घटक सूची http://camel.apache.org/components.html


एक आरेख हजारों विवरण से बेहतर है। यह चित्र कैमल की वास्तुकला को दर्शाता है।


यह एक पाइपलाइन कनेक्टिंग की तरह है

From---->To

आप के बीच में कई चैनल और पाइप जोड़ सकते हैं। नल डेटा के प्रवाह के लिए किसी भी प्रकार के स्वचालित या मैनुअल और प्रवाह को चैनल करने के लिए एक मार्ग हो सकता है।

यह सभी प्रकार और प्रसंस्करण के प्रकार के लिए कार्यान्वयन और कार्यान्वयन करता है। और उसी प्रसंस्करण के लिए कई दृष्टिकोण हैं क्योंकि इसमें कई घटक हैं और प्रत्येक घटक इसके तहत विभिन्न विधियों का उपयोग करके वांछित आउटपुट भी प्रदान कर सकता है।

उदाहरण के लिए, ऊंट में फ़ाइल स्थानांतरण स्थानांतरित या कॉपी की गई फ़ाइल और फ़ोल्डर, सर्वर या कतार से फ़ाइल स्थानांतरण किया जा सकता है।

-from-->To
   - from-->process-->to
   - from-->bean-->to
   - from-->process-->bean-->to
   -from-->marshal-->process-->unmarshal-->to

से / से ---- फ़ोल्डर, प्रत्यक्ष, सेरा, वीएम कुछ भी हो सकता है


यहां एक और प्रयास है।

आप जानते हैं कि वेबमाइड्स, आईसीएएन सीबेन्ड, टिबको बीडब्ल्यू, आईबीएम ब्रोकर जैसी चीजें कैसे हैं। उन्होंने सभी उद्यम में एकीकरण समाधान के साथ मदद की। इन उपकरणों को आमतौर पर एंटरप्राइज़ एप्लिकेशन एकीकरण (ईएआई) उपकरण नाम से जाना जाता है।

इन प्रौद्योगिकियों के आसपास ज्यादातर ड्रैग ड्रॉप टूल्स बनाए गए थे और भागों में आपको जावा में एडेप्टर लिखना होगा। ये एडाप्टर कोड या तो अनचाहे थे या परीक्षण के आसपास खराब उपकरण / स्वचालन था।

प्रोग्रामिंग में डिज़ाइन पैटर्न की तरह ही, आपके पास सामान्य एकीकरण समाधान के लिए एंटरप्राइज़ एकीकरण पैटर्न हैं। उन्हें ग्रेगोर होपे और बॉबी वूल्फ द्वारा उसी नाम की एक पुस्तक द्वारा प्रसिद्ध किया गया था।

यद्यपि एकीकरण समाधान को लागू करना काफी संभव है जो एक या कई ईआईपी का उपयोग करता है, कैमल एक्सएमएल, जावा, ग्रोवी या स्कैला का उपयोग करके इसे अपने कोड बेस में करने का प्रयास है।

ऊंट अपने समृद्ध डीएसएल और रूटिंग तंत्र के माध्यम से पुस्तक में सूचीबद्ध सभी एंटरप्राइज़ एकीकरण पैटर्न का समर्थन करता है।

तो कैमल आपके ईआईए टूल्स के लिए एक प्रतिस्पर्धी टेक्नोलॉय है जो आपके एकीकरण कोड का परीक्षण करने के लिए बेहतर समर्थन के साथ है। डोमेन विशिष्ट भाषाओं (डीएसएल) की वजह से कोड संक्षिप्त है। यह व्यापार उपयोगकर्ताओं द्वारा भी पठनीय है और यह मुफ़्त है और आपको उत्पादक बनाता है।


अपाचे कैमल एंटरप्राइज़ एकीकरण के लिए जावा फ्रेमवर्क है। उदाहरण: - यदि आप एक वेब एप्लिकेशन बना रहे हैं जो कई विक्रेता एपीआई के साथ बातचीत करता है तो हम ऊंट को बाहरी एकीकरण उपकरण के रूप में उपयोग कर सकते हैं। हम उपयोग के मामले के आधार पर इसके साथ और अधिक कर सकते हैं। मैनिंग प्रकाशन से कार्रवाई में ऊंट ऊंट सीखने के लिए एक महान किताब है। समीकरणों को नीचे के रूप में परिभाषित किया जा सकता है।

जावा डीएसएल

from("jetty://0.0.0.0:8080/searchProduct").routeId("searchProduct.products").threads()
    .log(LoggingLevel.INFO, "searchProducts request Received with body: ${body}")
    .bean(Processor.class, "createSearchProductsRequest").removeHeaders("CamelHttp*")
    .setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.POST))
    .to("http4://" + preLiveBaseAPI + searchProductsUrl + "?apiKey=" + ApiKey
                    + "&bridgeEndpoint=true")
    .bean(Processor.class, "buildResponse").log(LoggingLevel.INFO, "Search products finished");

यह सिर्फ एक आरईएसटी एपीआई एंडपॉइंट बनाना है जो बदले में बाहरी एपीआई को कॉल करता है और अनुरोध वापस भेजता है

वसंत डीएसएल

<route id="GROUPS-SHOW">
    <from uri="jetty://0.0.0.0:8080/showGroups" />
    <log loggingLevel="INFO" message="Reqeust receviced service to fetch groups -> ${body}" />
    <to uri="direct:auditLog" />
    <process ref="TestProcessor" />
</route>

आपके सवालों के लिए आ रहा है

  1. यह वास्तव में क्या है उत्तर: - यह एक ढांचा है जो एंटरप्राइज़ एकीकरण पैटर्न लागू करता है
  2. जावा में लिखे गए एप्लिकेशन के साथ यह कैसे बातचीत करता है? उत्तर: - यह किसी भी उपलब्ध प्रोटोकॉल जैसे http, ftp, amqp आदि से बातचीत कर सकता है
  3. क्या यह ऐसा कुछ है जो सर्वर के साथ मिलकर जाता है? उत्तर: - इसे टोमकैट जैसे कंटेनर में तैनात किया जा सकता है या जावा प्रक्रिया के रूप में स्वतंत्र रूप से तैनात किया जा सकता है
  4. क्या यह एक स्वतंत्र कार्यक्रम है? उत्तर: - यह हो सकता है।

आशा करता हूँ की ये काम करेगा


कंप्यूटिंग में अधिकांश "नई" चीजें वास्तव में बिल्कुल नई नहीं हैं, वे कुछ ऐसी चीज के आसपास एक रहस्यमय आवरण हैं जो पहले से ही अच्छी तरह समझी गई है। जब उन्हें समझना मुश्किल होता है, तो आमतौर पर किसी ने किसी अन्य उद्देश्य के लिए नई भाषा शर्तों का आविष्कार करने या मौजूदा शर्तों को उपनिवेशित करने का निर्णय लिया है (इसका एक अच्छा उदाहरण एक्स क्लाइंट्स का "क्लाइंट" और "सर्वर" का मतलब है।)

ऊंट एक जावा-आधारित रैपर / एपीआई इंटर-एप्लिकेशन मिडलवेयर के लिए है।

मिडलवेयर सॉफ्टवेयर के लिए एक सामान्य शब्द है जो उन संस्थाओं के बीच व्याख्या सेवाएं प्रदान करता है जो एक आम भाषा या डेटा प्रकार साझा नहीं करते हैं।

नीचे, कैमल नीचे है। हम यह ध्यान देकर वर्णन कर सकते हैं कि यह ईआईपी-प्रकार के मिडलवेयर प्रदान करता है।

यह मिडलवेयर स्वयं प्रदान नहीं करता है, क्योंकि यह जानकारी के बारे में जानकारी नहीं दे सकता कि अनुप्रयोगों को संवाद करने की आवश्यकता क्या है। लेकिन यह उस मिडलवेयर के आविष्कार भागों को बनाने के लिए एपीआई प्रदान करता है (एक प्रारंभ बिंदु बनाएं, एक अंत बिंदु बनाएं, शुरू करने और समाप्त करने के लिए स्थितियां बनाएं आदि)

उम्मीद है की वो मदद करदे।


यदि आपके पास 5 से 10 मिनट हैं, तो मैं आम तौर पर लोगों को जोनाथन एन्स्टी द्वारा अपाचे कैमल के साथ इस एकीकरण को पढ़ने की सलाह देता हूं। यह एक अच्छी तरह से लिखित टुकड़ा है जो कुछ ऊंट की अवधारणाओं के संक्षिप्त परिचय और अवलोकन देता है, और यह कोड नमूने के साथ उपयोग केस लागू करता है। इसमें, जोनाथन लिखते हैं:

अपाचे कैमल एक ओपन सोर्स जावा फ्रेमवर्क है जो एकीकरण को आसान बनाने और डेवलपर्स के लिए अधिक सुलभ बनाने पर केंद्रित है। यह प्रदान करके यह करता है:

  • सभी व्यापक रूप से उपयोग किए जाने वाले उद्यम एकीकरण पैटर्न (ईआईपी) के ठोस कार्यान्वयन
  • परिवहन और एपीआई की एक महान विविधता से कनेक्टिविटी
  • ईआईपी तारों और एक साथ ट्रांसपोर्ट करने के लिए डोमेन विशिष्ट भाषाएं (डीएसएल) का उपयोग करना आसान है

वर्मल इन एक्शन का एक मुफ्त अध्याय भी है जो पहले अध्याय में ऊंट पेश करता है। जोनाथन मेरे साथ उस पुस्तक पर सह-लेखक हैं।


विश्लेषण पर आधारित

ऊंट आधारित रूटिंग को एयरलाइन मालिक के जूते में डालकर बहुत आसानी से समझा जा सकता है (उदाहरण: अमेरिकन एयरलाइंस, जेट एयरवेज)।

'आपकी एयरलाइन' का उद्देश्य 'यात्रियों' को 'शहर' से दुनिया में दूसरे में ले जाना है। आप यात्रियों को ले जाने के लिए बोइंग, एयरबस, एचएएल जैसी विभिन्न 'एयरक्राफ्ट कंपनियों' से एयरक्राफ्ट का उपयोग करते हैं।

आपकी एयरलाइन के बोर्ड यात्रियों से शहर के 'हवाई अड्डे' का उपयोग करते हैं और शहर के हवाई अड्डे का उपयोग करके उन्हें डूबते हैं। एक यात्री कई शहरों में 'यात्रा' कर सकता है, लेकिन हर जगह उन्हें हवाईअड्डे के माध्यम से अपनी एयरलाइन के विमान और शहर के बीच यात्रा करने के लिए जाना पड़ता है।

ध्यान दें कि शहर से एक यात्री 'प्रस्थान' अनिवार्य रूप से आपकी एयरलाइनों के विमान में 'पहुंच रहा है'। और शहर में एक 'घुसपैठ' पहुंचने वाला, अनिवार्य रूप से विमान से निकल रहा है। चूंकि हम एयरलाइन के मालिकों के जूते में हैं, इसलिए 'आगमन यात्री' और 'प्रस्थान यात्री' शब्द को हमारे पारंपरिक विचारों से उलट दिया जाता है जो शहरों के परिप्रेक्ष्य पर आधारित होते हैं।

प्रत्येक शहर के समान 'हवाई अड्डे' बुनियादी ढांचे का उपयोग 'प्रस्थान' यात्रियों और 'आगमन' यात्रियों द्वारा किया जाता है। एक हवाई अड्डा यात्रियों को प्रस्थान के लिए 'प्रस्थान बुनियादी ढांचा' प्रदान करता है, जो आने वाले यात्रियों के लिए उपलब्ध 'आगमन बुनियादी ढांचे' से अलग है।

यात्रियों को यात्रा के दौरान, एयरलाइनों के भीतर विमान के अंदर प्रदान की गई विभिन्न 'सुविधाओं' के कारण अपनी गतिविधियों में अपना दिन जारी रखना जारी रख सकता है।

इसके शीर्ष पर, आपकी एयरलाइन 'स्थानीय भाषा को समझने' या 'यात्रा' के लिए आपको तैयार करने जैसे विशेष उपचारों के लिए लाउंज सुविधाएं भी प्रदान करती है।

चलिए निम्नलिखित के साथ उपरोक्त कुछ शब्द / वाक्यांशों को प्रतिस्थापित करते हैं:

आपकी एयरलाइन: अपाचे कैमल

विमान कंपनियां: परिवहन तंत्र

आपकी एयरलाइन का विमान: अपाचे कैमल की अंतर्निहित परिवहन तंत्र

ले जाएं: मार्ग

यात्रियों: संदेश;

शहर: प्रणाली;

हवाई अड्डा: ऊंट घटक;

स्थानीय भाषाओं को समझना: रूपांतरण टाइप करें;

प्रस्थान: उत्पादन, उत्पादन

पहुंचने: खपत, खपत

यात्रा: मार्गित

सुविधाएं: प्रदान की गई

शब्दों को बदलने के बाद, आपको यह मिलता है कि आपको क्या मिलता है:

'अपाचे कैमल' का उद्देश्य 'संदेश' से दुनिया में किसी अन्य व्यक्ति को 'संदेशों' को रूट करना है। अपाचे ऊंट संदेश रूटिंग के लिए विभिन्न परिवहन तंत्र का उपयोग करता है।

अपाचे कैमल 'से' सिस्टम के 'ऊंट आधारित घटक' का उपयोग करके संदेश उठाता है और 'टू' सिस्टम के 'ऊंट आधारित घटक' का उपयोग करके उन्हें छोड़ देता है। एक संदेश कई प्रणालियों के लिए मार्गांतरित हो सकता है, लेकिन हर जगह उन्हें 'अपाचे कैमल के अंतर्निहित परिवहन तंत्र' और सिस्टम के बीच यात्रा करने के लिए 'ऊंट आधारित घटक' से गुज़रना पड़ता है।

ध्यान दें कि सिस्टम से 'उत्पादित' संदेश अनिवार्य रूप से अपाचे कैमल के अंतर्निहित परिवहन तंत्र में 'उपभोग' किया जाता है। और एक प्रणाली द्वारा खपत एक संदेश, अनिवार्य रूप से 'अपाचे कैमल के अंतर्निहित परिवहन तंत्र' द्वारा उत्पादित किया जाता है।

चूंकि हम ऊंट को समझने का प्रयास कर रहे हैं, इसलिए हमें यहां कैमेल के परिप्रेक्ष्य से अवगत होना चाहिए। 'उपभोक्ता संदेश' और 'निर्माता संदेश' शब्द का अर्थ, हमारे पारंपरिक विचारों से उलट है जो सिस्टम के परिप्रेक्ष्य पर आधारित हैं।

'निर्माता संदेश' और 'उपभोक्ता संदेश' द्वारा समान 'ऊंट आधारित घटक' कोडिंग आधारभूत संरचना का उपयोग किया जाता है। एक 'ऊंट आधारित घटक' 'निर्माता संदेश' के लिए 'निर्माता अंतराल' और 'उपभोक्ता संदेश' के लिए 'उपभोक्ता समापन बिंदु' प्रदान करता है।

कैमेल द्वारा संदेशों को रूट किए जाने पर संसाधित किया जा सकता है।

इस रूटिंग के शीर्ष पर, कैमल 'टाइप रूपांतरण' जैसी कई विशेष सुविधाएं प्रदान करता है और कई और ...


यदि आप एंटरप्राइज़ इंटीग्रेशन पैटर्न से अवगत हैं, तो अपाचे कैमल एक एकीकरण फ्रेमवर्क है जो सभी ईआईपी लागू करता है।

और आप वेब-कंटेनर में एक स्टैंडअलोन एप्लिकेशन के रूप में कैमल को तैनात कर सकते हैं।

असल में, यदि आपको विभिन्न प्रोटोकॉल और तकनीकों के साथ कई अनुप्रयोगों को एकीकृत करना है, तो आप ऊंट का उपयोग कर सकते हैं।


एक परियोजना विवरण बनाना जटिल नहीं होना चाहिए।

मैं कहता हूँ:

अपाचे कैमल रूटिंग के साथ मैसेजिंग प्रौद्योगिकी गोंद है। यह मैसेजिंग स्टार्ट और एंड पॉइंट्स को एक साथ जोड़ता है जिससे विभिन्न स्रोतों से संदेशों को विभिन्न स्थानों पर स्थानांतरित किया जा सकता है। उदाहरण के लिए: जेएमएस -> जेएसओएन, HTTP -> जेएमएस या फ़नलिंग एफ़टीपी -> जेएमएस, HTTP -> जेएमएस, जेएसओएन -> जेएमएस

विकिपीडिया कहता है:

अपाचे कैमल एक नियम-आधारित रूटिंग और मध्यस्थता इंजन है जो रूटिंग और मध्यस्थता नियमों को कॉन्फ़िगर करने के लिए एपीआई (या घोषणात्मक जावा डोमेन विशिष्ट भाषा) का उपयोग कर एंटरप्राइज़ एकीकरण पैटर्न के जावा ऑब्जेक्ट आधारित कार्यान्वयन प्रदान करता है। डोमेन विशिष्ट भाषा का अर्थ है कि अपाचे कैमल नियमित रूप से जावा कॉन्फ़िगरेशन फ़ाइलों के बिना नियमित जावा कोड का उपयोग करके आपके आईडीई में रूटिंग नियमों के प्रकार-सुरक्षित स्मार्ट समापन का समर्थन कर सकता है; हालांकि वसंत के अंदर एक्सएमएल विन्यास भी समर्थित है।

देख? यह मुश्किल नहीं था?


हाँ, यह शायद थोड़ा देर हो चुकी है। लेकिन हर किसी की टिप्पणियों में जोड़ने के लिए एक बात यह है कि, कैमल वास्तव में सुविधाओं के एक पूर्ण सेट के बजाय एक टूलबॉक्स है। विभिन्न परिवर्तनों और प्रोटोकॉल रूपांतरणों को विकसित करने और आवश्यकता होने पर आपको इसे ध्यान में रखना चाहिए।

ऊंट खुद ही अन्य ढांचे पर निर्भर करता है और इसलिए कभी-कभी आपको यह समझने के लिए भी समझना पड़ता है कि आपकी आवश्यकताओं के लिए सबसे उपयुक्त कौन सा अनुकूल है। उदाहरण के लिए आरईएसटी को संभालने के कई तरीके हैं। यह पहली बार थोड़ा भ्रमित हो सकता है, लेकिन एक बार जब आप उपयोग करना शुरू कर लेते हैं और परीक्षण करते हैं तो आप आसानी से महसूस करेंगे और विभिन्न अवधारणाओं के बारे में आपका ज्ञान बढ़ जाएगा।


एक उद्यम में, विभिन्न प्रकार की कई प्रणालियों मौजूद हैं। इनमें से कुछ विरासत प्रणाली हो सकती हैं जबकि कुछ नए हो सकते हैं। ये सिस्टम अक्सर एक दूसरे के साथ बातचीत करते हैं, और एकीकृत होने की आवश्यकता होती है। सिस्टम के कार्यान्वयन के रूप में यह बातचीत या एकीकरण आसान नहीं है, उनके संदेश प्रारूप भिन्न हो सकते हैं। इसे प्राप्त करने का एक तरीका कोड को लागू करना है जो इन मतभेदों को पुल करता है। हालांकि यह एकीकरण बिंदु बिंदु होगा। यदि कल फिर से अगर किसी सिस्टम में बदलाव होता है तो दूसरे को भी बदला जाना चाहिए जो अच्छा नहीं है। इस बिंदु के बजाय एकीकरण को इंगित करने के लिए जो तंग युग्मन का कारण बनता है हम सिस्टम के बीच मतभेदों को मध्यस्थ करने के लिए एक अतिरिक्त परत को कार्यान्वित कर सकते हैं। इसका परिणाम ढीले युग्मन में होता है और हमारे मौजूदा सिस्टम को प्रभावित नहीं करता है। अपाचे कैमल एक नियम-आधारित रूटिंग और मध्यस्थता इंजन है जो रूटिंग और मध्यस्थता नियमों को कॉन्फ़िगर करने के लिए एपीआई (या घोषणात्मक जावा डोमेन विशिष्ट भाषा) का उपयोग करके एंटरप्राइज़ एकीकरण पैटर्न का जावा ऑब्जेक्ट-आधारित कार्यान्वयन प्रदान करता है।
अपाचे कैमल ट्यूटोरियल यहां विस्तृत स्पष्टीकरण और उदाहरण मिल सकते हैं


ऊंट ए से बी के संदेश भेजता है:

इसके लिए एक संपूर्ण ढांचा क्यों? खैर, अगर आपके पास क्या है:

  • कई प्रेषक और कई रिसीवर
  • एक दर्जन प्रोटोकॉल ( ftp , http , jms , आदि)
  • कई जटिल नियम
    • रिसीवर ए और बी को केवल एक संदेश भेजें
    • एक्सएम के रूप में रिसीवर सी को एक संदेश बी भेजें, लेकिन आंशिक रूप से इसका अनुवाद करें , इसे समृद्ध करें (मेटाडेटा जोड़ें) और यदि स्थिति एक्स है , तो इसे रिसीवर डी को भी भेजें, लेकिन सीएसवी के रूप में

तो अब आपको चाहिए:

  • प्रोटोकॉल के बीच अनुवाद करें
  • एक साथ गोंद घटकों
  • मार्ग परिभाषित करें - कहां जाता है
  • कुछ मामलों में कुछ चीजें फ़िल्टर करें

ऊंट आपको बॉक्स के ऊपर (और अधिक) देता है:

आपके लिए क्या और कैसे परिभाषित करने के लिए एक शांत डीएसएल भाषा के साथ:

  new DefaultCamelContext().addRoutes(new RouteBuilder() {
        public void configure() {
            from("jms:incomingMessages")
                    .choice() // start router rules
                    .when(header("CamelFileName")
                            .endsWith(".xml"))
                    .to("jms:xmlMessages")
                    .when(header("CamelFileName")
                            .endsWith(".csv"))
                    .to("ftp:csvMessages");
}

यह भी देखें और this और कैमल इन एक्शन (जैसा कि अन्य ने कहा है, एक उत्कृष्ट पुस्तक!)


एक और परिप्रेक्ष्य से एक परिभाषा:

अपाचे कैमल एक एकीकरण ढांचा है। इसमें कुछ जावा पुस्तकालय शामिल हैं, जो जावा प्लेटफॉर्म पर एकीकरण समस्याओं को लागू करने में आपकी सहायता करते हैं। इसका अर्थ यह है कि दूसरी तरफ एपीआई से अलग कैसे है और एंटरप्राइज़ सर्विस बस (ईएसबी) मेरे लेख में " अपाचे कैमल का उपयोग कब करें" में वर्णित है।







enterprise-integration