之前跟着學習的太龐大了,這個作者講的也不錯,當做簡易化的複習了
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