初識Camel


轉自:https://blog.csdn.net/TuxedoLinux/article/details/86064833

文檔:<Camel in Action>

API:https://www.javadoc.io/doc/org.apache.camel/camel-api/latest/index.html

Camel是什么 

Camel框架的核心是一個路由引擎,它允許你定義自己的路由規則,決定接受哪些消息,做出決定如何處理,發送這些消息給其他目標。Camel用這種集成語言允許你定義復雜的路由規則。

Camel 提供了高水平的抽象,它允許你根據相同的api協議或者系統的數據類型集成各種各樣的系統。Camel的組件提供了特殊實現的接口api,其目的是給不同的協議和數據類型服務。Camel打破了傳統模式,它支持80多種不同的協議和數據類型,它的擴展性和模塊性允許你實現你自己專有協議的無縫插件。這些體系結構的選擇淘汰沒有必要的轉換,從而使camel更加的高效,易學。《Enterprise Integration Patterns

camel功能點如下:

  路由和斡旋引擎

       企業集成模式

       Domain-speclfic language(DSL)

       可拓展組件庫

       有效負載路由

       模塊化、組件式體系結構

       POJO模型

       容易配置

       數據類型自動轉換

       輕量核心

       測試裝備 

    

CamelContext是一個有類別容器;提供了對許多有用服務的訪問,最值得注意的是組件、類型轉換器、注冊表、端點、路由、數據格式和語言。

Components:包含用到的組件。Camel 能夠通過自動載入類路徑或者自動激活OSGI容器等方式來運行。第七章中討論。

Endpoints:包含已創建的endpoints。Endpoint是camel的抽象概念。信道末端模型。系統可以利用信道收發消息。如下圖:

下圖:展示了它是怎么工作的

在camel中,你需要在URL中配置endpoint。例如file:data/inbox?delay=5000,你也用這種法師涉及到了endpoints。在運行的時候,camel將會用URL標記的方式查找endpoint。

Scheme 標識endpoint的類型。

Routes:包含被添加的路由。會在第二章中講解。

Type converters:包括已經載入的類轉換。Camel擁有可以手動或自動轉換類的機制。第三章中詳細描述。

Registry:包含可以查閱beans的注冊表。默認情況下,它是JNDI registry。如果基於Spring,它是Spring ApplicationContext ,如果使用OSGI容器,它是OSGI registry。第四章講。

Languages:包含載入的語言。Camel允許使用不同的語言創建表達式。你會看到在講解DSL的時候使用的Xpath 語言。完全參考camel自己的簡約的表達式語言可以參考 附錄A。

 PROCESSOR:處理過程是camel的一個核心概念。代表了一個有處理能力節點的使用,創建,或者修改交換輸入。在路由期間交換會從一個處理流到下一個處理;例如你可以想象一個畫面,每個節點都有指定的處理方式。一個處理的輸出到一個處理的輸入連成一個隊。

Producer是camel的一個抽象概念。它是用來創建消息給endpoint

 

   Producer是一個camel的抽象類,實體能夠創建並發送消息到endpoint。圖1.10一方面也說明了這個概念。當一個消息需要被發送到一個endpoint時,生產者將創建一個exchange並填充兼容個別項目的endpoint數據。例如:FileProducer會將消息body寫入到一個文件。還有JmsProducer會把Camel消息映射到正在發送消息到JMS目標上的javax.jms.Messagebefore中。在camel中,這是很重要的功能,因為它隱藏了與特有的transports的相互作用的復雜性。你要做的是將一個消息路由到endpoint,然后producer會做重活。

  

  消費者是接收生產者生產的消息的服務。把他們封裝到exchange中並且發送他們去處理。消費者是camel中被路由的exchanges的源頭。

     回頭看圖1.10,我們看到消費者與其他camel概念的交互。創建一個新exchange,消費者將使用endpoint封裝被消費的有效載荷。Processor然后使用路由引擎發起exchange的路由。在camel中有兩種消費者:事件驅動的消費者 和 輪詢的消費者。它們的區別很重要,因為它們有助於解決問題。

  事件驅動的消費者(EVENT-DRIVEN CONSUMER):  這種消費者和客戶-服務結構webservice。同時在EIP中也表示為異步的接收者。消費者監聽指定的消息通道,通常使用TCP/IP端口或JMS隊列,等待客戶端發送消息給它。當消息到達的時候,消費者喚醒並且將消息進行處理。

  輪詢的消費者(POLLING CONSUMER). 相比事件驅動消費者,輪詢消費者主動從指定源獲取消息,例如FTP服務。輪詢消費者在EIP術語中也是 同步的接受者,因為它不會獲取更多消息,直到他完成當前消息的處理。通常輪詢消費者是定時輪詢消費者,通過指定間隔。File,FTP和Email傳輸通常用定時輪詢消費者。

 

      示例中,在camel運行時會首先創建一個camelContext,通過RouteBuilder和java DSL來添加路由邏輯。通過DSL,可以一目了然的讓camel組件,endpoints,消費者,生產者等實例化。你要關注的是定義路由為你的集成項目。底層中,camel是訪問FileComponent並且用它作為一個工廠創建endpoint和它的生產者。同時也創建消費者。

路由引擎

  Camel的路由引擎其實就是做消息移動。    引擎不會暴露給開發者。但是你應該意識到它的存在,它做了所以的重活,確保消息能夠根據屬性准確路由。

路由

  路由是camel的一個核心抽象概念。最簡單的方式是定義一個路由作為處理鏈。在消息 應用中使用路由有很多種原因。解耦的客戶端和服務器端,生產者和消費者,路由可以

  • 動態的決定一個客戶端將會被那個服務調用。

  • 提供了一種處理額外流程的靈活方式

  • 運行服務器端和客戶端獨立開發。

  • 增強一些系統的功能。   

  Camel中的每一個路由都有一個唯一的標識。這些標識為logging,debuging,監控,路由的啟動停止服務的。路由也有一個精確的輸入消息資。


免責聲明!

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



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