Apache ServiceMix

Apache ServiceMix

Apache ServiceMix是小巧的開源集成容器,它結合了Apache ActiveMQ、Camel、CXFKaraf的特性和功能到一個強大的運行平台,你可以用它構建屬於自己的集成解決方案。它提供了一個由OSGI技術支持的 全面的企業預備ESB 。(It provides a complete, enterprise ready ESB exclusively powered by OSGi.

基本介紹

  • 軟體名稱:Apache ServiceMix
  • 介紹:開源集成容器
  • 套用方式:OSGI 聲明式服務
  • 安裝:JDK版本1.5以上
介紹,快速入門指南,

介紹

Apache ServiceMix是小巧的開源集成容器,它結合了Apache ActiveMQ、Camel、CXFKaraf的特性和功能到一個強大的運行平台,你可以用它構建屬於自己的集成解決方案。你可以用它構建屬於自己的集成解決方案。它提供了一個由OSGI技術支持的全面的企業ESB。(原文:It provides a complete, enterprise ready ESB exclusively powered by OSGi.)
基於Apache License v2發布。
主要特性(features):
  • 基於Apache ActiveMQ的可靠訊息
  • 基於Apache Camel的訊息、路由和EIP(Enterprise Integration Patterns)
  • 基於Apache CXF的WS-*和RESTful web服務
  • 由Apache Karaf技術支持的基於OSGI的服務運行環境。
通過另外可安裝的特性(features),ServiceMix也支持:
  • Activiti的BPM引擎
  • Apache OpenJPA的完整的JPA支持
  • Apache Aries的XA事務管理
  • 仍舊支持JBI標準(在ServiceMix 3.x系列之後已廢棄),通過Apache ServiceMix NMR來支持,Apache ServiceMix NMR包含了豐富的Event、Messaging和Audit API。
構建ServiceMix套用方式:
  • OSGI Blueprint
  • OSGI 聲明式服務
  • Spring DM(legacy)

快速入門指南

1、介紹
這個快速入門指南的目標是讓你在20分鐘之內了解ServiceMix是什麼和你能夠用它做什麼。在這段時間裡,我們將在你的機器上安裝ServiceMix,部署一些基本的集成路由和給容器擴展一些附加功能。
2、安裝
在我們能開始使用Apache ServiceMix之前,我們首先必須的安裝它並且讓它在本地機器上運行。
2.1、系統要求
  • 為了部署和編譯,要求Java Developer Kit(JDK)版本1.5及其以上;
  • 大於100M的磁碟空間。
  • 下載Apache ServiceMix
Apache ServiceMix 4.3.0-SNAPSHOT在Apache許可2下可用,可以官網下載。
根據你的作業系統,你應該下載tar.gz或者zip格式檔案:
  • tar.gz格式檔案適用於Linux/Unix/MacOS X;
  • zip格式檔案適用於Windows。
  • 安裝Apache ServiceMix
安裝Apache ServiceMix與在磁碟上解壓縮一個下載的壓縮檔案一樣簡單。在這個指南的剩餘部分,我們將涉及到這個位置,記為SERVICEMIX_HOME。
2.4、啟動Apache ServiceMix
取決於你的平台,根據以下說明啟動Apache ServiceMix。在啟動這個容器之後,你可以通過控制台管理這個容器。
在Windows平台上
在一個命令行提示符視窗里,導航到ServiceMix解壓縮目錄並運行bin\servicemix.bat檔案。
例如:如果ServiceMix安裝在c:\tools\apache-servicemix-4.3.0-SNAPSHOT目錄,則:
> cd c:\tools\apache-servicemix-4.3.0-SNAPSHOT
> .\bin\servicemix
在Linux/Unix/MacOS X平台上
在一個命令行提示符視窗里,導航到ServiceMix解壓縮目錄並運行bin\servicemix.bat檔案。
例如:如果ServiceMix安裝在~/Applications/apache-servicemix-4.3.0-SNAPSHOT目錄,則:
$ cd ~/Applications/apache-servicemix-4.3.0-SNAPSHOT
$ ./bin/servicemix
3、Apache ServiceMix控制台
既然我們已經成功地安裝和啟動Apache ServiceMix,我們將仔細看一下這個控制台。在這個控制台里,你可以管理ServiceMix實例、增加和移除bundles、安裝可選的附加功能等等。
3.1、與bundles一起工作
當ServiceMix第一次啟動,一整套為它提供核心功能的bundles將被安裝。讓我們使用命令控制台來發現更多關於它們的東西。
這個osgi:list命令能夠被用於查看所有已經安裝好的bundles。輸入如下命令:
karaf@root> osgi:list
如果在你的ServiceMix實例上運行這個命令,輸出結果看起來如下圖所示:
對於每個bundles,你將會得知:
  • 這個bundle的id;
  • 這個bundle的狀態;
  • 如果這個bundle包含一個Blueprint或者Spring XM檔案,則接下來的兩列顯示這裡定義的bean已經被成功地創建;
  • 這個bundle的啟動級別;
  • 這個bundle的名稱和版本。
如果你想在這個清單中查找一個特定的bundle,你可以通過類似於unix的管道和實用工具來幫助你查找。例如:查找所有與“Camel”相關的bundles:
karaf@root> osgi:list | grep camel
3.2、與日誌一起工作
許多你寫的程式將有一些日誌輸出。為了在日誌檔案中查看這些日誌信息,你可以使用log:display命令。
karaf@root> log:display
如果你僅僅對日誌檔案中最新的異常日誌信息感興趣,你可以通過使用log:display-exception命令來實現。
karaf@root> log:display-exception
在運行時,你可以通過log:set命令改變日誌輸出級別。現在你可以試一下通過在運行的serviceMix實例上執行這些命令改變日誌的輸出級別,查看日誌檔案是否真的輸出了額外的日誌信息,然後再將其日誌輸出級別改回到INFO級別。
karaf@root> log:set DEBUG
karaf@root> log:display | grep DEBUG
3.3、更多的命令
以上所介紹的僅僅是一些常見的命令使用例子。在構建ServiceMix套用的過程中,這裡有更多的命令可以幫助你部署、監控、管理和排除故障。
4、使用Camel
既然我們已經知道怎樣去通過命令控制台操作Apache ServiceMix,那么現在是時候開始使用它去做它能做的事了。讓我們構建第一個Camel 路由的集成解決方案,並在ServiceMix上部署它。
4.1、我們簡單的方案
在這個簡單的方案中,我們將把檔案從一個輸入目錄(camel/input)中移動到一個輸出目錄(camel/output)中。為了確保我們能跟蹤檔案移動的軌跡,當移動一個檔案時,我們將在日誌檔案中寫一些日誌信息。
4.2、創建這個路由
在ServiceMix上部署一個新的路由的最簡單辦法之一是:在Blueprint XML檔案中定義一個路由。
<?xmlversion="1.0"encoding="UTF-8"?><blueprintxmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"><camelContextxmlns="http://camel.apache.org/schema/blueprint"><route><fromuri="file:camel/input"/><logmessage="Moving${file:name}totheoutputdirectory"/><touri="file:camel/output"/></route></camelContext></blueprint>
4.3、部署這個路由
為了部署和啟動這個路由,僅僅需要複製這個你創建的XML檔案到ServiceMix部署目錄中即可。這個檔案將被ServiceMix發現和部署。你將會在你的ServiceMix安裝目錄下發現一個camel/input目錄,並且任何被拷貝到這個目錄中的檔案都將會被移動到camel/output目錄中。
如果你在控制台界面中執行log:display命令,則在任何一個檔案被移動時你都將看到相關的日誌信息輸出。
4.4、使用控制台管理這個路由
使用osgi:list命令,你將會注意到你的XML檔案已經被轉換為一個bundle,並且這個Blueprint容器已經創建和啟動了你的這個Camel 路由。
從這個輸出中,你也可以知道你創建的XML檔案相應的bundle的id是200(註:原文有誤,寫成了209)。在任何必要的時候,你可以啟動和停止這個路由。接下來,讓我們演示一下。
首先,使用如下命令停止這個路由:
karaf@root> osgi:stop 200
這個路由不再是活動狀態的,任何被拷貝到camel/input目錄(註:原文有誤,寫成了orders/input)中的檔案仍然留在這個目錄中。一旦你重啟這個路由,這些待處理的檔案將又會被移動。
karaf@root> osgi:start 200
(註:原文有誤,寫成了karaf@root> osgi:stop 200)
5、增加ActiveMQ到ServiceMix
開箱即裝即用,每一個ServiceMix實例都帶有一個嵌入式的ActiveMQ JMS代理。這使得它很容易地在同一個機器上使用持久訊息與Camel路由通信,而且這也讓你能夠為了集群和負載均衡可以分發你的路由到多個實例上。
5.1、我們的方案
這這個方案中,我們也想在兩個目錄之間移動檔案。我們通過傳送一個事件JMS訊息到佇列中來代替直接地記錄檔案移動。之後,我們在創建一個Camel路由來接受這個事件JMS訊息並記錄它們。
5.2、移動檔案和傳送事件訊息
我們將創建第一個Blueprint XML檔案,它包含一個移動activemq/input目錄下的檔案到activemq/output目錄中的路由。然後,這將產生一個事件訊息到一個JMS訊息佇列(被稱為events)中。
<?xmlversion="1.0"encoding="UTF-8"?><blueprintxmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"><camelContextxmlns="http://camel.apache.org/schema/blueprint"><route><fromuri="file:activemq/input"/><touri="file:activemq/output"/><setBody><simple>FileMovedEvent(file:${file:name},timestamp:${date:now:hh:MM:ss.SSS})</simple></setBody><touri="activemq://events"/></route></camelContext></blueprint>
保持這個檔案到ServiceMix的部署目錄中並像你處理簡單的Camel路由例子一樣檢查這個bundle的狀態。你現在應該可以放檔案到activemq/input目錄中,並能看見它們被移到activemq/output目錄中。
5.3、接收這個事件訊息
在部署第一個XML檔案之後,很顯然你還不能發現任何事件被記錄日誌。這個事件訊息已經被傳送到了ActiveMQ佇列中,但是這裡還沒有任何程式去接收這個事件訊息。現在讓我們通過再創建第二個Blueprint XML檔案來接收這個事件訊息。
<?xmlversion="1.0"encoding="UTF-8"?><blueprintxmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"><camelContextxmlns="http://camel.apache.org/schema/blueprint"><route><fromuri="activemq://events"/><touri="log:events"/></route></camelContext></blueprint>
一旦這第二個Blueprin XML檔案被部署,你將在log:display的輸出中開始看見這個事件訊息。
5.4、使用控制台來管理路由
你現在能夠在控制台中啟動和停止這兩個路由。這最值得注意的重點是你能夠在檔案被處理的過程中停止這個事件處理路由。之後,一旦你重啟這個事件處理路由,你可以接收所有這些來自這個路由沒有運行時移動檔案產生的事件。
6.可選的功能
到目前為止,在這個快速入門指南中我們所討論的一切都是Apache ServiceMix自帶的開箱即裝即用的功能,但是我們也有許多可選的組件,它們在必要的時候可以被安裝到這個容器中。
6.1、組件清單
這個組件清單可以通過osgi:list命令獲取。這個清單中向你展示了這個組件是否已被創建、這個組件的版本和名稱。
這整個清單包含了許多不同的組件:可選的Camel組件、一些為支持ServiceMix添加代理和封裝的組件、一個web控制台,此外,你可以通過|或者grep查找這個清單中你感興趣的組件。
karaf@root> features:list | grep camel
6.2、例子:web控制台
為了獲得已經被安裝在ServiceMix中的web控制台,需要再控制台中安裝這個組件:
karaf@root> features:install webconsole
之後,你可以在清單中驗證這個組件是否被標記為已安裝。你將會注意到這個webconsole-base組件也已經作為webconsole組件本身的必備功能被安裝。
你現在可以讓你的瀏覽器指向地址:http://localhost:8181/system/console,並且以用戶名:smx 密碼:smx訪問這個web控制台。在這個webconsole中,你也可以啟動和停止bundles、安裝可選的組件。
7、結束工作
這就是我們的ServiceMix世界的介紹旅行結束部分。很顯然,我們僅僅對此做了一些膚淺的研究,但是我們希望你能知道:你期望從ServiceMix中獲取到什麼和在你的環境中怎么去使用它。

相關詞條

熱門詞條

聯絡我們