?

淺析開源ActiveMQ的特點及應用

2015-07-16 11:18郭小丹
山東工業技術 2015年18期
關鍵詞:實例應用程序客戶端

郭小丹

(西藏民族大學 信息工程學院,陜西 咸陽 712082)

0 引言

在數據交換過程中,數據傳輸是非常重要的一個步驟,消息中間件是實現系統內部業務間的數據共享或者數據交換的基礎,并且可以提供基于同步或者異步等多種數據通信模式,對系統的管理及后期的擴展具有重要的作用,綜合分析,本論文中采用消息中間件完成信息的交互。

ActiveMQ 屬于面向消息中間件的一種,開放源碼,基于 Apache 2.0 licenced 的發布并且實現了 JMS1.1 規范[1],提供的企業級消息通信的可靠性、穩定性和安全性均較高,而且方便日后擴展。目前,ActiveMQ 已經被許多項目使用并且作為異步信息通信的核心。

1 ActiveMQ概述

ActiveMQ 旨在成為標準的、跨語言的以及跨平臺的消息中間件。在遵循 JMS 規范的基礎上還添加了一些其他特點,主要有 Java 管理擴展(Java Management Extensions,JMX 管理);信息組通信,負責將同一組信息發送給某個用戶端進行處理;主從管理(Master/Salve),側重于系統的可靠性,屬于集群模式的一種,當系統的主代理發生故障,為了使得消息中間件繼續正常運行,可讓從代理代替主代理;有序信息管理,保證信息接收方有序接收并處理信息發送端發送的信息;延遲接收發送的信息,當信息發送方發送了信息后,信息接收方沒有及時讀取其信息,當信息接收方開啟連接后,ActiveMQ會將之前未被信息接收方讀取的信息推送給信息接收方;信息優先級,ActiveMQ按照信息優先級的高低按序處理和投遞信息;消息持久化,通過設置將關鍵數據持久化到數據庫中,當消息中間件掛了,可保留關鍵數據,不至于丟失重要數據等。

2 ActiveMQ 特性

ActiveMQ 遵循 JMS 規范,其特性是對 JMS1.1 規范的實現,具體有如下特性:

(1)是 Apache 默認的 JMS provider,完全支持 J2EE1.4 和 JMS1.1規范;

(2)支持 Spring,可以很容易的把 ActiveMQ 嵌入到 Spring 系統里,可以使用 Spring的各種特性例如 IOC、AOP 等;

(3)支持多種傳輸協議,使得 ActiveMQ 具有更好的靈活性,可提供不同的連接;

(4)支持消息持久化,提高了信息傳輸的可靠性;

(5)支持同步或者異步的消息傳輸模式;

(6)支持多語言的客戶端,ActiveMQ 提供多種客戶端 APIs,例如 Java、C/C++、PHP、.NET 等,雖然 ActiveMQ 運行于 Java 虛擬機上,但是其客戶端能夠選擇多種被支持的其他語言,使得 ActiveMQ 的使用具有很好的廣泛性[2];

(7)保證了高性能的集群,ActiveMQ 的多個 broker 可以同時工作,具有廣泛的不同的部署拓撲結構,其拓撲結構如圖1所示,Broker,消息中間者即就是消息提供者,Broker 可以在 activemq.xml 文件中進行配置,Store and Forward Network Federation,即消息路由分發系統,消息中間者 Broker 接收到消息后,會通過這個系統對消息進行存儲和分發,因此 ActiveMQ 具有很好的可擴展性。

圖1 ActiveMQ的拓撲結構圖

3 開源ActiveMQ的應用

程序的耦合性表示至少兩個以上的應用程序之間互相的依賴關系,用來度量軟件結構內各模塊之間的緊密度。模塊間的緊密度越高,則其耦合性越強,說明模塊間的獨立性就越差。程序的耦合性主要由軟件模塊之間方法的調用方式、接口的復雜性等決定的。系統的耦合性對于分布式應用程序尤為重要。如果應用程序的某個模塊發生變化時直接引起另外一個模塊的改變,那么這些模塊之間是緊耦合的;如果應用程序的某個模塊的變化不會影響到其他模塊,那么這些模塊之間是松耦合的。

對于 CORBA、COM、EJB 和 DCE 等會使用遠程過程調用(RPC,Remote ProceduralCalls)技術的屬于緊耦合技術,使用該技術的情況下,調用者需阻塞直至被調用者運行結束返回反饋信息為止。目前有很多的應用程序使用 RPC 而且很成功,但是緊耦合的應用程序會出現因系統的小改動而影響整個系統、系統交互是阻塞式等顯著的缺點。

松耦合應用程序不需要調用者進入阻塞狀態,松耦合系統可以處理應用程序中的一些不可預見的變化。應用程序的信息發送方只需要將信息發送給ActiveMQ 而不需要考慮 ActiveMQ 何時以哪種方法將信息傳輸給信息接收方,信息接收方也不用考慮信息的來源和信息的傳遞方式。ActiveMQ作為消息的中間件,支持不同編程語言的客戶端,也支持客戶端間的不同通信協議,可以實現多語言的復雜系統間的異步通信。所以,ActiveMQ 是一種靈活性較好、為多語言的交叉程序提供松耦合的消息中間件。根據以上特性,可以在以下場景使用 ActiveMQ:(1)如果兩個應用程序之間需要通信就可以考慮使用 ActiveMQ,無論這兩個應用程序是在同一臺主機上還是分布式的,ActiveMQ 支持消息的異步通信且能保證消息的成功投遞。如果多個應用程序同時運行于同一臺主機上,那么可以將 ActiveMQ 單獨部署在另一臺主機上,也可以將其內嵌在 Java 應用程序中。無論是訂閱模式還是點對點模式都不需要阻塞等待反饋。如果多個應用程序是分布在多臺機器上,可以使用單一 ActiveMQ 實例或者多 ActiveMQ 實例,單一 ActiveMQ 實例中的應用程序均與同一個 ActiveMQ 進行通信,ActiveMQ 能夠單獨運行在一臺機器上,也能夠與一些應用程序共同運行在同一臺機器上;多ActiveMQ 實例中每個應用程序都會實例化一個 ActiveMQ,所有應用程序收發信息都是通過本地ActiveMQ 實現的,然后這些 ActiveMQ 實例協同工作,信息根據每個應用程序的需求通過若干 ActiveMQ 中間件被傳輸至信息的處理端;(2)適合于應用是由多種語言集成的環境,ActiveMQ 由 Java 編寫,提供的客戶端 API 有 Java、C/C++、PHP、Ruby、.NET 等,當需要集成多平臺下的多語言應用時,可以考慮使用 ActiveMQ,不同語言的客戶端間可以通過 ActiveMQ 實現通信;(3)RPC 的替代者,雖然使用 RPC 的客戶端很多且很成功,例如 ATM、信用卡系統等,但是系統規模會因其同步請求要被阻塞而受限,異步通信則可以加快系統的請求處理;(4)應用間解耦,緊耦合系統尤其是在分布式環境下會存在一些問題,而松耦合系統的依賴性較小,對于未知變化的適應能力較高,系統的部分改變不會影響整個系統,同時系統應用間的交互也簡單,提高了系統的負載能力和可用性。

4 結語

分析了ActiveMQ的功能和特點,并對它的幾個特性進行總結,指出ActiveMQ配置的操作步驟,在此基礎上從不同角度的需求得出相應的配置選擇。ActiveMQ是一個優秀的開源軟件,有豐富的配置選擇,如何更好地利用 ActiveMQ成為進一步的研究目標。

[1]周城,葛斌,蔣林承.一種基于消息中間件的網頁實時處理技術[J].電腦知識與技術,2011(10).

[2]http://blog.sina.com.cn/s/blot_616e189fO100ns4s.html

猜你喜歡
實例應用程序客戶端
你的手機安裝了多少個客戶端
“人民網+客戶端”推出數據新聞
——穩就業、惠民生,“數”讀十年成績單
刪除Win10中自帶的應用程序
谷歌禁止加密貨幣應用程序
媒體客戶端的發展策略與推廣模式
新華社推出新版客戶端 打造移動互聯新聞旗艦
完形填空Ⅱ
完形填空Ⅰ
三星電子將開設應用程序下載商店
微軟軟件商店開始接受應用程序
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合