Camel是一個(gè)集成框架下翎,旨在使您的集成項(xiàng)目富有成效和樂(lè)趣混稽。Camel項(xiàng)目開始于2007年初采驻,現(xiàn)在是一個(gè)成熟的開放源碼項(xiàng)目,在自由的apache2許可證下可用匈勋,擁有強(qiáng)大的社區(qū)礼旅。
Camel的重點(diǎn)是簡(jiǎn)化集成。我們相信颓影,當(dāng)您讀完這些頁(yè)面時(shí)各淀,您將欣賞Camel并將其添加到您的必備工具列表中。
這個(gè)Apache項(xiàng)目之所以被命名為Camel诡挂,是因?yàn)樗拿趾芏潭胰菀子涀∷榻健?jù)傳這個(gè)名字的靈感可能來(lái)自創(chuàng)始人之一曾經(jīng)抽過(guò)的駱駝煙。在Camel網(wǎng)站上璃俗,一個(gè)常見(jiàn)問(wèn)題條目(http://camel.apache.org/why-the-name-camel.html)列出了該名稱由來(lái)的原因奴璃。
1.1.1 What is Camel?
Camel框架的核心是一個(gè)路由引擎,或者更準(zhǔn)確地說(shuō)城豁,是一個(gè)路由引擎生成器苟穆。它允許您定義自己的路由規(guī)則,決定從哪些源接收消息,以及決定如何處理這些消息并將其發(fā)送到其他目的地雳旅。Camel使用一種集成語(yǔ)言跟磨,允許您定義類似于業(yè)務(wù)流程的復(fù)雜路由規(guī)則。如圖1.1所示攒盈,Camel形成了不同系統(tǒng)之間的粘合劑抵拘。
Camel的一個(gè)基本原則是,它對(duì)需要處理的數(shù)據(jù)類型不作任何假設(shè)型豁。這一點(diǎn)很重要僵蛛,因?yàn)樗鼮殚_發(fā)人員提供了集成任何類型系統(tǒng)的機(jī)會(huì),而無(wú)需將數(shù)據(jù)轉(zhuǎn)換為規(guī)范格式迎变。
Camel提供了更高層次的抽象充尉,允許您通過(guò)使用相同的API與不同的系統(tǒng)進(jìn)行交互,而不考慮系統(tǒng)使用的協(xié)議或數(shù)據(jù)類型衣形。Camel中的組件提供了針對(duì)不同協(xié)議和數(shù)據(jù)類型的API的特定實(shí)現(xiàn)驼侠。開箱即用的Camel支持280多種協(xié)議和數(shù)據(jù)類型。它的可擴(kuò)展和模塊化體系結(jié)構(gòu)允許您實(shí)現(xiàn)并無(wú)縫插入對(duì)您自己的協(xié)議的支持泵喘,無(wú)論是專有的還是非專有的泪电。這些架構(gòu)選擇消除了不必要的轉(zhuǎn)換,使Camel不僅更快纪铺,而且更精簡(jiǎn)相速。因此,它適合嵌入到其他需要Camel豐富處理能力的項(xiàng)目中鲜锚。其他開源項(xiàng)目突诬,如apache servicemix、Karaf和ActiveMQ芜繁,已經(jīng)使用Camel作為實(shí)現(xiàn)集成的一種方式旺隙。
我們還應(yīng)該提到Camel不是什么,Camel不是企業(yè)服務(wù)總線(enterpriseservicebus骏令,ESB)蔬捷,盡管有些人稱Camel為輕量級(jí)ESB,因?yàn)樗С致酚衫拼⑥D(zhuǎn)換周拐、編排、監(jiān)視等凰兑。Camel沒(méi)有容器或可靠的消息總線妥粟,但是它可以部署在一個(gè)容器或消息總線中,比如前面提到的apache servicemix吏够。因此勾给,我們更喜歡將Camel稱為集成框架滩报,而不是ESB。
如果一提到esb就讓人想起了龐大而復(fù)雜的部署播急,那么不要害怕脓钾。Camel在微服務(wù)或物聯(lián)網(wǎng)(IoT)網(wǎng)關(guān)等小型部署中也同樣如魚得水。
為了理解Camel是什么桩警,讓我們看看它的主要特性惭笑。
為什么使用駱駝?
Camel在集成空間中引入了一些新穎的想法生真,這也是作者決定首先創(chuàng)建Camel的原因。我們將在整本書中探索豐富的Camel特性捺宗,但Camel背后的主要思想是:
Routing and mediation engine
Extensive component library
Enterprise integration patterns (EIPs)
Domain-specific language (DSL)
Payload-agnostic router
Modular and pluggable architecture
Plain Old Java Object (POJO) model
Easy configuration
Automatic type converters
Lightweight core ideal for microservices
Cloud ready
Test kit
Vibrant community