apache camel_Apache Camel简介
apache camel
Apache Camel是著名的企業集成模式的開源實現。 Camel是一個路由和中介引擎,可幫助開發人員以各種特定于域的語言(DSL)(例如Java,Spring / XML,scala等)創建路由和中介規則。
駱駝用途廣泛
Camel使用URI來支持大量的傳輸和消息傳遞模型,例如HTTP,JMS,JBI,Mina,SCA,CXF,它還與外部組件和數據格式很好地兼容。 要了解Camel的多功能性,您可以在下面的鏈接中瀏覽其支持的組件和URI列表。 http://camel.apache.org/components.html
駱駝易于使用
駱駝允許我們使用同一組API來創建路由并在各個組件之間傳遞消息。 這使得它非常容易使用
單元測試駱駝輕而易舉
單元測試對于編寫任何質量代碼至關重要。 駱駝使軟件開發的基礎變得非常容易。 它提供了許多現成的組件,例如CamelContextSupport,camel-guice,camel-test-blueprint,可輕松測試代碼。 在以后的文章中會更多。
駱駝的術語/類/接口
端點是交換消息的地方。 它可能是指地址,POJO,電子郵件地址,Web服務uri,隊列uri,文件等。在駱駝中,終結點是由實現的終結點接口實現的。 端點被稱為路由的東西包裝。
CamelContext是所有駱駝應用程序的核心,它代表Camel運行時系統。
這是圍繞CamelContext對象的薄包裝,它負責將交換或消息發送到端點。
組件實際上是一個端點工廠。 由于駱駝支持許多不同種類的資源,因此這些資源中的每一個都有不同種類的端點。 在實際情況下,應用程序不要直接使用組件創建端點。 相反,CamelContext決定實例化哪個組件,然后使用該組件實例創建端點。 因此,在應用程序中,我們將擁有。 CamelContext.getEndpoint(“ pop3://john.smith@mailserv.example.com?password = myPassword”); 現在,在這種情況下,pop3是組件的名稱。 CamelContext將所有組件名稱與組件類映射,并使用其實例化實例的名稱。 一旦擁有了組件的句柄,它就會通過調用實例化端點。 Component.createInstance()方法。
消息表示單個具體消息,即請求,答復或異常。 所有具體的消息類都會影響消息接口,例如JmsMessage類。
交換是消息的容器。 當消費者在路由過程中收到消息時創建。
處理器接口表示處理消息的類。 它包含單個方法public void process(Exchange交換)引發異常。應用程序開發人員可以實現此接口,以便在消費者收到消息時對消息執行業務邏輯。
路由是通過過濾器或路由器通過任意類型的決策,將消息從源逐步移動到目的地。 它們是借助DSL(特定于域的語言)進行配置的。 Java DSL是通過實現routebuilder接口創建的。 它具有一個稱為configure()的方法,該方法定義了消息的整個路由。 也可以使用spring通過xml文件配置路由。
駱駝代碼的一個小例子。
讓我們以一個小例子來說明一下Camel可以做什么。 在此示例中,我們將文件夾中存在的文件組移動到另一個文件夾。 在此過程中,我們將執行以下操作
1.依賴關系 –在pom.xml中添加以下依賴關系
<dependency><groupId>org.apache.camel</groupId><artifactId>camel-core</artifactId><version>${camel-version}</version></dependency><dependency><groupId>org.apache.camel</groupId><artifactId>camel-spring</artifactId><version>${camel-version}</version></dependency><dependency><groupId>org.apache.camel</groupId><artifactId>camel-aws</artifactId><version>${camel-version}</version></dependency>2.創建RouterBuilder –可以通過擴展org.apache.camel.builder.RouterBuilder類并覆蓋configure()方法來創建RouterBuilder。 這是一個例子
import org.apache.camel.builder.RouteBuilder;/*** Created by IntelliJ IDEA.* User: Niraj Singh* Date: 7/28/13* Time: 10:29 AM* To change this template use File | Settings | File Templates.*/ public class MyFirstRouterBuilder extends RouteBuilder {@Overridepublic void configure() throws Exception {try{from( "file:d:/vids").to("file:d:/temp");}catch(Exception e){}} }3.在Spring中注冊CamelContext并在Spring中注入RouterBuilder。
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"><camelContext id="sqsContext" xmlns="http://camel.apache.org/schema/spring"><routeBuilder ref="myFirstRouter" /></camelContext><bean id="myFirstRouter" class="com.aranin.aws.sqs.MyFirstRouterBuilder"/></beans>4.啟動駱駝上下文并執行代碼,然后停止駱駝上下文。
import org.apache.camel.CamelContext; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext;/*** Created by IntelliJ IDEA.* User: Niraj Singh* Date: 4/16/13* Time: 11:21 AM* To change this template use File | Settings | File Templates.*/ public class CamelHello {public static void main(String args[]) throws Exception {try {ApplicationContext springcontext = new FileSystemXmlApplicationContext("D:/samayik/awsdemo/src/main/resources/hellocamel.xml");CamelContext context = springcontext.getBean("firstCamelContext", CamelContext.class);context.start();Thread.sleep(10000);context.stop();} catch ( Exception e ) {System.out.println(e);}} }如果您運行此類,則首先我們從spring config文件中加載camelcontext。 在其中注入路由器生成器。 上下文啟動后,然后將源目錄中的所有文件復制到目標目錄。 復制完所有文件后,嘗試將新文件復制到源目錄,在這種情況下,上下文運行10000 ms之前,該文件也將復制到目標文件。
我沒有更多關于駱駝的高級教程。 也許您會發現它們很有用。 參考部分列出了這些鏈接。
參考資料
就這些了。 盡管沒有人會發表評論,但是我還是要堅持不懈,如果您喜歡本教程,仍然請大家排一兩行。
溫暖的問候
尼拉吉
參考: Weblog4j博客上的JCG合作伙伴 Niraj Singh 對Apache Camel的介紹 。翻譯自: https://www.javacodegeeks.com/2013/08/introduction-to-apache-camel.html
apache camel
總結
以上是生活随笔為你收集整理的apache camel_Apache Camel简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为手机有通话录音功能吗
- 下一篇: 旃檀功德佛怎么读 旃檀功德佛