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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Apache Camel简化SOA实施进程

發布時間:2024/4/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache Camel简化SOA实施进程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://yangzb.iteye.com/blog/494571

Apache Camel簡化SOA實施進程

  • 博客分類:
  • Framework
ApacheSOAJMSSpring企業應用

  在過去的幾年中,整合技術得到了突飛猛進的發展。XML /REST /Web 服務/面向服務架構(SOA)的革命不斷的促使工程師們和軟件公司去創造豐富的協議、適配器、傳輸器、容器、標準,最佳實踐···應有盡有。

  無可否認的,現有的這些代碼是非常復雜的、多樣化的,幾乎沒有什么它們不可以做到的事情。但這些軟件包都是從技術上來建立的,從而使得如何有效的使用其功能成為了讀者很大的挑戰。

  目前,眾多讀者都完成了這一項挑戰。豐富的經驗和成千上萬的成功案例促進了許多基礎架構設計模式定義的形成,從而幫助開發者在整合時能夠開門見山,少走彎路。其中,有一套設計模式在業界引起了注意,那就是Hohpe 和 Woolf's企業整合模式。這些模式包含了一些技術上無關的詞匯來描述大量整合的解決方案。他們并不是側重于低層次的編程,而是采取自上而下的方案來開發一個異步的、以信息為基礎的架構。

  一致的詞匯是很好的,而易于使用的框架在實際建立基礎架構的時候豈不是更好嗎?

  這正是Apache 的開源Camel項目背后的理念?,F在,行之有效的并且真實的一套模式已可以獲得了,很明顯,下一步就是要去創造一個能夠以最簡單的方式來實施這個模式的驅動器。

  Camel 是一個代碼先行的工具,它允許開發者在無須學習廠商定制和復雜的底層技術的情況下進行精密的大規模集成。Camel使用Java 領域說明性專用語言來連接信息系統和配置路由和調解規則,在POJO基礎上實施企業整合模式。這樣,就能使得開發人員不必閱讀一頁又一頁的諸如JMS 或JBI之類的技術規范,也不用處理較低級別的Spring框架就可以直接設計和建立面向服務架構(SOA)。

  Apache Camel是從Apache其他項目尤其是Apache ActiveMQ 以及Apache ServiceMix的代碼和靈感有機的衍生出來的。該項目的成員們發現:人們在許多不同的情況下都想要建立或是使用企業集成模式書中的模式。因此,Camel團隊就這樣明確的目的開始建立這樣的框架。

  Camel 概況:

  建立Camel的第一步是解偶底層框架中的模式。一些人想要利用企業服務總線(ESB )中的模式,還有一些人則選擇Message Broker中的模式,而其他人需要使用應用程序自身的模式或信息提供者間進行對話。仍然有一些人想要在Web服務 框架下或是其他溝通平臺上使用。比起將此路由代碼與特定的Message Broker或企業服務總線(ESB)綁定來說,Camel選擇提取此代碼作為獨立的框架, 這樣一來它就能被應用到任何的項目中去。Camel有一個腳本――不管是在Servlet , 或是Web服務包中,全面企業服務總線(ESB),還是信息應用程序中,任何地方都可以做到重新利用。

  Camel的最初也是主要的優勢在于開發團隊無須為了連接系統在容器上下功夫。很多人會認為從容器上下功夫是一個正確的途徑,甚至是當成對勇氣的考驗,但對于越來越多的團隊來說這些阻礙成為了不必要的障礙。有了Apache Camel,開發人員就能在完成任務的過程中將無關的任務減少到最低。如果其他要求得到保證的話,Camel還可以在JBI容器中實施,但這并不是必要的。

  為了簡化編程,Camel還支持特定的Java和XML域語言,使得企業集成模式你那個在所有的Java IDE 或Spring XML中使用。這種更高層次的提取能更有效的解決問題。

  Camel重新利用了許多Spring 2 的特性,如說明性交易,控制配置倒置,以及眾多為了與JMS和JDBC,Java Persistence API (JPA)結合工作的實用層面的東西。這提高了抽取的水平,簡化了編程,減少了需要編寫的XML,但如果人們要是追根究底花些功夫的話,也會發現其實 Camel仍然暴露了線級訪問。

  Camel示例

  我們分別解釋不同的方式實現Apache Camel的配置,首先將使用Java DSL(領域特定語言),接下來是Spring XML配置。

  Java DSL 配置

  如下的列子就是實現了當你想在一個目錄結構中從JMS對列里得到信息。首先,我們需要創建一個CamelContext對象:

  CamelContext context = new DefaultCamelContext();

  這里遠不止一種方法向CamelContext添加組件。你也可以在我們創建好路由之后再添加組件,正如一下示例所示:

?

context.addRoutes(new?RouteBuilder()?{
  public?void?configure()?{
  from("test-jms:queue:test.queue").to("file://test");
  //?set ?up?a?listener?on?the?file?component
  from("file://test").process(new?Processor()?{
  public?void?process(Exchange ?e)?{
  System.out.println("Received?exchange:?"?+?e.getIn());
  }
  });
  }
  });

  或者明確的加入JMS組件,如下所示:  

ConnectionFactory?connectionFactory?=?new?ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");
  //?note?we?can?explicity?name?the?component
  context.addComponent("test-jms",?JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));

  下次你必須要啟動Camel context。如果你使用Spring去配置Camel context這將會為你實現自動化過程,如果你是使用純Java的話那就必須用先調用start()的方法:

  camelContext.start();

  這將啟動所有的配置路由規則。

  當我們完全啟動CamelContext后我們可以輸入一些對象至Camel。

  在通常的使用中,更多的情況往往是通過一些功能組件,外部系統將一些信息或是事件直接輸入到Camel中,但是在這里我們將使用CamelTemplate,這也是一個最簡單的方法用以測試之前的配置是否正確。

  CamelTemplate template = new CamelTemplate(context);

  這時我們可以使用CamelTemplate通過JMS發送一些測試消息:  

for?(int?i?=?0;?i?<?10;?i++)?{
  template.sendBody("test-jms:queue:test.queue",?"Test?Message:?"?+?i);
  }

  我們從CamelTemplate中發送對象(此時通常為文本對象)納入CamelContext中并提供給測試組件:jms:queue:test.queue。這些文本對象會自動修改進JMS信息中,并在JMS對列中以test.queue張貼出來。當我們創建好路線我們配置好FileComponent去接收test.queue。

  FileComponent文件將從對列中提取信息并保存在一個名為test的目錄中。每一條信息都會存放在一個與其目的地或是信息ID相對應的文件中。

  最后,我們配置自己的listener并從FileComponent獲得通知,以文本的形式打印出來。

  Spring XML配置

  這個示例將使用Spring XML配置實現文件的轉換,利用XQuery從目錄中將結果發送至JMS 對列。它從目錄中選取文件進行解析,然后使用XQuery進行轉換,再發送至消息對列。當然,為了更清楚的看到生成文件,我們也會有一些別的方法去從 JMS對列中選取內容再寫到一個輸出目錄中。

  運行示例

  讓我們用Camel Maven插件來運行這段示例。舉例來說,通過開源軟件的源代碼版或可執行版即可實現以下操作:  

cd?examples/camel-example-spring-xquery
  mvn?camel:run

  你現在應該可以看到在target/outputFiles目錄下所生成的文件內容,這就是從JMS對列中所讀出的轉化信息。

  代碼走查

  需要做的是用那些定義在類下的 META-INF/spring/camelContext.xml文件正常啟動Spring應用。這是應用Camel的XML配置進行配置CamelContext的規范Spring XML文檔。

  請務必注意這段XML示例文件底部,我們明確的配置了ActiveMQ組件以及關于如何連接代理的詳細內容。

  關鍵的Spring XML代碼內容如下所示:

?

<camelContext?useJmx="true"?xmlns="http://activemq.apache.org/camel/schema/spring">

???<!--?lets?parse?files,?transform?them?with?XQuery?and?send?them?to?JMS?-->
???<route>
?????<from?uri="file:src/data?noop=true"/>
?????<to?uri="xquery:myTransform.xquery"/>
?????<to?uri="jms:MyQueue"/>
???</route>

???<!--?now?lets?write?messages?from?the?queue?to?a?directory?-->
???<route>
?????<from?uri="jms:MyQueue"/>
?????<to?uri="file:target/outputFiles"/>
???</route>

</camelContext>

<!--?lets?configure?the?default?ActiveMQ?broker?URL?-->
<bean?id="jms"?class="org.apache.camel.component.jms.JmsComponent">
???<property?name="connectionFactory">
?????<bean?class="org.apache.activemq.ActiveMQConnectionFactory">
???????<property?name="brokerURL"?value="vm://localhost?broker.persistent=false"/>
?????</bean>
???</property>
</bean>?

  希望這篇文章能夠讓你真正認識到使用Apache Camel來實現企業應用整合是一件多么實際的事。

?

總結

以上是生活随笔為你收集整理的Apache Camel简化SOA实施进程的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲黄色激情 | 国产三级大片 | xvideos成人免费视频 | 深夜视频在线播放 | 99热最新| 男女超碰 | 蜜臀尤物一区二区三区直播 | 三上悠亚一区二区三区 | 秋霞影院午夜伦 | 国产精品视频一区二区三区在3 | 日韩视频在线一区二区 | 艹少妇视频 | 国产911视频 | 800av免费在线观看 | 天天干夜夜艹 | www亚洲视频 | 国产成人三级一区二区在线观看一 | 亚洲五月综合 | 国产美女一级片 | 玖玖玖国产精品 | 91精品婷婷国产综合久久蝌蚪 | 亚洲日本欧美精品 | 日批视频在线看 | 欧美放荡办公室videos4k | 狠狠v欧美v日韩v亚洲ⅴ | 亚洲精品一 | 国产精品视频一区二区三区在3 | 黄色aa视频 | 欧美少妇激情 | 九九视频免费看 | 日韩欧美国产视频 | 深夜网站在线观看 | 欧美在线观看一区二区三区 | 激情九月婷婷 | 色婷婷久| 欧美色一区二区三区在线观看 | 国产精品第72页 | 免费看的av片 | 午夜剧场福利社 | av日韩国产 | 成人资源在线 | 中文字幕av无码一区二区三区 | 国产成人无码精品亚洲 | 国产sss| 射一射 | 特级a级片| 精品国偷自产在线 | 午夜高潮视频 | 亚洲av日韩精品久久久久久久 | 91精品系列 | 欧美日韩高清一区二区 国产亚洲免费看 | 国产女人18水真多18精品一级做 | 亚洲自拍偷拍视频 | jizzz18 | 国产精品视频久久久久久 | 国产成人无码精品久在线观看 | 成人三级在线播放 | 欧美成人黄 | cao在线视频| 四虎在线免费观看 | 老司机福利av | 欧美日韩精品在线 | 久久黑人 | 欧美怡红院一区二区三区 | 插插看看 | 在线网站av | 久国产视频 | 国产精品麻豆一区 | 日韩欧美亚洲国产 | 国产精品资源站 | www狠狠干 | 在线观看免费视频一区二区 | 国模无码国产精品视频 | 中国肥胖女人真人毛片 | 亚洲欧美中文字幕5发布 | 欧美性受xxx| 色成人综合网 | 天天操天天干天天舔 | 久久久久9999 | 欧美日韩在线免费播放 | 91精品国产色综合久久不8 | 欧美日韩一区在线播放 | 中文字幕乱码人妻二区三区 | 国产呦系列 | 男人的天堂一级片 | 亚洲成av人片久久 | 亚洲视频日韩 | 久久首页 | 日韩av男人天堂 | 日本黄色中文字幕 | 亚洲毛片一区二区 | 成人国产精品一区二区 | 国产成人精品一区二三区 | 国产精品久久久久久久久久久不卡 | 日韩www| 久久精品国产网红主播 | 深夜精品| 日韩欧美一卡二卡 | 97福利视频 |