關(guān)于apache camel你需要知道的

定義:輕量級的集成框架,基于EIP(企業(yè)整合模式)blabla...

什么時候使用:
多個應(yīng)用程序使用不同的協(xié)議和技術(shù)集成,無論使用什么協(xié)議,無論使用什么技術(shù),無論特定領(lǐng)域的語言。

主要應(yīng)用場景:
1,消息匯聚,
比如你有來自不同服務(wù)器的消息,有ActiveMQ,RabbitMQ,WebService等,你想把它們都存儲到日志文件中

new RouteBuilder() {
  @Override
  public void configure() throws Exception {
  from("amqp:queue:incoming").to("log:com.mycompany.log?level=DEBUG");
  from("rabbitmq://localhost/A/routingKey=B").to("log:com.mycompany.log?level=DEBUG");
  from("jetty:http://localhost:8080/myapp/myservice").to("log:com.mycompany.log?level=DEBUG");
  }
}

from表示從這個endpoing取消息,to表示將消息發(fā)往這個endpoint,endpoint是消息地址,包含協(xié)議類型以及url。

2.消息分發(fā),
分為兩種,順序分發(fā)和并行分發(fā)。
順序分發(fā):先到第一個endpoint,處理完再分發(fā)到第二個endpoint......如果第一個endpoint出錯,那么消息不會下傳。

from("amqp:queue:order").to("uri:validateBean", "uri:handleBean", "uri:emailBean");

這個規(guī)則是從order隊列中取訂單信息,然后依次驗證訂單,處理訂單,并發(fā)送郵件通知用戶。任何一個步驟出錯,下一個步驟將不回執(zhí)行。

并行分發(fā):得到消息后同時分發(fā)到不同的endpoint,沒有先后順序之分,各個endpoint也是獨立處理消息的。如:

from("amqp:queue:order").multicast().to("uri:validateBean", "uri:handleBean", "uri:emailBean");

同時發(fā)送到to的所有endpoint。

3,消息轉(zhuǎn)換,如xml轉(zhuǎn)換json

from("amqp:queue:order").process(new XmlToJsonProcessor()).to("bean:orderHandler");

XmlToJsonProcessor是一個自定義的類,繼承org.apache.camel.Processor,用來將xml轉(zhuǎn)換為json。

4, 規(guī)則引擎
使用spring xml配置route,無需修改代碼,就能修改業(yè)務(wù)邏輯,解耦
如可以將from("amqp:queue:order").multicast().to("uri:validateBean", "uri:handleBean", "uri:emailBean");可以改成

<route>
        <from uri="amqp:queue:order"/>
        <multicast>
            <to uri="uri:validateBean"/>
            <to uri="uri:handleBean"/>
            <to uri="uri:emailBean"/>
        </multicast>
</route>

同時camel還內(nèi)置大量的processor,用于邏輯運算,過濾,這樣就容易靈活去route

from("amqp:queue:order").filter(header("foo").isEqualTo("bar")).choice()
    .when(xpath("/person/city = &#39;London&#39;"))
        .to("file:target/messages/uk")
    .otherwise()
        .to("file:target/messages/others");

這條規(guī)則相對訂單進行過濾,只處理“bar”的訂單,然后根據(jù)城市講訂單給不同的endpoint

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,254評論 6 342
  • 一說到REST,我想大家的第一反應(yīng)就是“啊,就是那種前后臺通信方式。”但是在要求詳細(xì)講述它所提出的各個約束,以及如...
    時待吾閱讀 3,594評論 0 19
  • 晨曉,雨淋漓,心如水靜,情似海深,這世間,唯生命不可辜負(fù)。佇立窗前,回眸,發(fā)現(xiàn)被晨光和室內(nèi)的燈光交替拉得長長...
    那些年聆聽的閱讀 154評論 0 0
  • 第一杯敬你 敬你如抓不住的風(fēng) 席卷過我荒草叢生的眼睛 讓我想起常驚喜 讓我長恨來不及 我干杯 你隨意 第二杯敬你 ...
    天涼客走閱讀 393評論 0 1

友情鏈接更多精彩內(nèi)容