之前跟着學習的太龐大了,這個作者講的也不錯,當做簡易化的復習了
Camel介紹:
1.Camel是一個基於規則路由和中介引擎,提供企業集成模式的Java對象的實現,
通過應用程序接口(或稱為陳述式的Java領域特定語言(DSL))來配置路由和中介的規則。
領域特定語言意味着Apache Camel支持你在的集成開發工具中使用平常的,類型安全的,
可自動補全的Java代碼來編寫路由規則,與那種復雜的XML配置相比極大簡化了規則定義開發。
同時,它也支持在Spring中使用XML配置定義路由和中介規則。
2.Camel 采用URI來描述各種組件,這樣你可以很方便地與各種傳輸或者消息模塊進行交互,
其中包含的模塊有 HTTP, ActiveMQ, JMS, JBI, SCA, MINA,CXF Bus API。
這些模塊是采用可插拔的方式進行工作的。
Apache Camel的核心十分小巧你可以很容易地將其集成在各種Java應用中。
目前Apache Camel作為一個路由以及媒介引擎可以與Apache ActiveMQ 、Apache CXF 、
Apache MINA 、Apache ServiceMix項目集成。
Camel提供的基於規則的路由(Routing)引擎,可以使用Camel定義的DSL語言,方便的定義出各種Routing。
如下例:
from(“file://xxxx").to("activemq://xxxx)將某文件,讀入並寫入到ActiveMQ的JMS中。
2.基本概念
1.Endpoint
Camel中的Endpoint類似webservice中的endpoint,即某個資源的位置。
Camel使用URI來定位一個enpoint. 比如上例中的from(“file://xxxx”),
可以是file:///edi/po/?include=.*\\.txt, 代表/EDI/PO/下的所有txt文件,即為一個endpoint。
2.Component
Camel的內置組件(用戶也可以按照Camel的接口約定,
來定義自己的component),用以提供對某種協議的資源訪問的支持,
如上例中的file即為component, 其提供了對本地文件系統訪問的支持,
activemq是另一個component, 提供了camel訪問以ActiveMQ實現的JMS的直接訪問能力。
3.Routing Language
Camel 提供了3種方式定義Routing,
A. Java 語言兼容的DSL語言
舉例:
from("file:edifiles?include=.*\\.txt").to("smooks://classpath:smooks-config.xml") .
bean(wrapper, "wrap") .to("activemq:queue:tempQ")
end();
說明:此例子中,是讀取edifiles文件夾下的所有txt文件,然后路由至smooks組件,
smooks是一個文件轉換組件,完成后,調用bean組件,
bean是一個可以調用用戶自己定義的POJO的組件,完成后,
通過activemq組件,路由至一個名為tempQ的JMS隊列。
注:該語法是java兼容的,可以正常在Eclipse等Java IDE中編輯並編譯。
B. Spring語法兼容的XML配置文件
<route>
<from uri="file://inputdir/"/>
<convertBodyTotype="java.lang.String"/>
<to uri="activemq:queue:tempQ "/>
</route>
此例子中,讀取inputdir文件夾下的文件,然后轉換成String,寫入名為tempQ的JMS隊列。
C. ScalaDSL
3.項目主頁:http://www.open-open.com/lib/view/home/1340807942296
學習來源:https://www.open-open.com/lib/view/open1340807942296.html