日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

apache camel_Apache Camel入门

發布時間:2023/12/3 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 apache camel_Apache Camel入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

apache camel

在先前的博文中,我們了解了企業集成模式(EIP)。 現在,在這篇文章中,我們將研究實現這些模式的Apache Camel框架。

關于駱駝:

Apache Camel是一個開放源代碼項目,已有將近5年的歷史,并且擁有大量的用戶社區。 該框架的核心是一個引擎,它負責中介工作并將消息從一個系統路由到另一個系統。 在外圍,它具有大量組件,可以與使用各種協議(例如FTP,RPC,Webservices,HTTP,JMS,REST等)的系統接口。 它還提供了Java,Spring和Scala中易于理解的領域特定語言。

現在讓我們開始使用Apache駱駝。 我們將使用maven設置項目,為所需的駱駝庫添加依賴關系,并使用Java和Spring DSL編寫示例。

考慮一個接受兩種類型訂單的系統。 小部件和小工具。 訂單到達JMS隊列,并以XML格式指定。 小工具清單會輪詢文件目錄中的傳入訂單,而小部件清單會在隊列上偵聽。 我們對所有到達的訂單運行XPath,并確定它們是屬于小部件還是小工具庫存。 下圖描述了我們的用例:

首先,只需在目錄中打開命令行窗口,然后鍵入mvn archetype:generate

"c:\myprojects>mvn archetype:generate

假設我們的路徑中有Maven 2+和jdk 1.6版本,同樣要運行此示例,我們需要一個activemq代理。

我們將在pom中添加以下依賴項

org.apache.camel : camel-core : 2.10.1 - Lib containing Camel engineorg.apache.camel : camel-ftp : 2.10.1 - Camel's ftp componentorg.apache.activemq : activemq-camel : 5.6.0 org.apache.activemq : activemq-pool : 5.6.0 - Libs required to integrate camel with activemqlog4j : log4j : 1.2.16 org.slf4j : slf4j-log4j12 : 1.6.4 - Libs for logging

完整的pom.xml粘貼在該要點條目上。

現在,讓我們的駱駝路線編碼,該路線將輪詢JMS隊列,應用XPath找出訂單是用于小工具清單還是小部件清單,然后將其路由到FTP目錄或JMS隊列。

到達我們系統的訂單具有以下結構

<xml version="1.0" encoding="UTF-8"> <order><product>gadget</product><lineitems><item>cdplayer</item><qty>2</qty></lineitems><lineitems><item>ipod-nano</item><qty>1</qty></lineitems> </order>

product元素的值指定是小工具訂單還是小工具訂單。 因此,在XPath下方對訂單進行應用將使我們決定將該消息路由到何處。/order/product=“ gadget”,然后轉發至FTP目錄,否則轉發至隊列。

現在讓我們對路由進行編碼,為此,需要擴展RouteBuilder(org.apache.camel.builder.RouteBuilder)類并重寫它的configure方法。 我們將類命名為JavaDSLMain,并將以下代碼放入其configure方法中:

from("activemq:queue:NewOrders?brokerURL=tcp://192.168.64.144:61616").choice().when(xpath("/order/product = 'gadget'")).to("activemq:queue:GadgetOrders?brokerURL=tcp://192.168.64.144:61616").otherwise().to("ftp://192.168.101.3/camel-demo?username=admin&password=admin&binary=true");

這樣做之后,現在讓我們分析以上路線。 上面的關鍵字構成了駱駝EIP DSL; 該路線的意圖總結如下:

from :這表示從端點獲取消息,即consume ,在我們的情況下,這恰好是一個隊列。
選擇 :這是一個謂詞,這里我們應用一個簡單的規則。
xpath :這表示將xpath應用于當前消息,xpath的結果為布爾值。 :這告訴駱駝將消息放在端點上,即產生

每個關鍵字都可以使用一些參數來工作。 例如,from采取端點參數來消費消息,在本例中,它是JMS(activemq)代理上的隊列。

請注意,Camel會自動為您進行類型轉換,在上述路由中,在應用XPath之前,消息對象已轉換為DOM。

我們還將main方法放入此類本身,以快速對其進行測試。 在main方法內部,我們需要實例化一個Camel上下文,該上下文將承載此路由,并且在啟動上下文時,Camel將建立路由并開始偵聽NewOrders隊列。

main方法中包含的代碼如下:

CamelContext camelContext = new DefaultCamelContext(); camelContext.addRoutes(new JavaDSLMain()); camelContext.start(); /* wait indefinitely */ Object obj = new Object(); synchronized (obj) { obj.wait(); }

查看此要點條目以獲取完整的代碼清單。

使用Camel的另一種方法是使用Spring,Camel路由進入Spring應用程序上下文文件。 不用編寫Java代碼,我們只使用XML來快速定義路由。 為此,我們需要在Spring上下文文件中導入Camel名稱空間并使用
諸如Spring工具套件之類的IDE可以快速構建和編寫集成應用程序。

在這個gist條目中檢查展示Camel路由的Spring應用程序上下文。將該上下文文件放在META-INF / spring文件夾中,即在我們的maven項目中,它位于/ src / main / resources / META-INF / spring文件夾下。

在頂部,我們導入了Camel的Spring命名空間,該命名空間允許在Spring的應用程序上下文中定義Camel路由,此外,在我們的pom文件中,我們需要添加依賴項以包含Spring bean的依賴關系,以在Spring中識別和實例化Camel引擎。 在下面添加以包括對Spring的Camel支持。

<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-spring</artifactId> <version>2.10.1</version></dependency>

Camel提供了一個幫助程序類(org.apache.camel.spring.Main),它可以掃描保存在下面的所有Spring應用程序上下文文件。
META-INF / spring文件夾保存在類路徑下。 檢查此要點,顯示所需的代碼。
通過這個示例,我們實現了基于內容的路由器模式,該模式檢查消息的內容以進行路由決策。

參考:來自NS.Infra博客的JCG合作伙伴 Abhishek Jain的Apache Camel入門 。

翻譯自: https://www.javacodegeeks.com/2012/12/getting-started-with-apache-camel.html

apache camel

總結

以上是生活随笔為你收集整理的apache camel_Apache Camel入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。