再熟悉下Apache Camel的組件


之前跟着學習的太龐大了,這個作者講的也不錯,當做簡易化的復習了

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM