JMS和MQ的關系:
JMS是一個用於提供消息服務的技術規范,它制定了在整個消息服務提供過程中的所有數據結構和交互流程。
而MQ則是消息隊列服務,是面向消息中間件(MOM)的最終實現,是真正的服務提供者;MQ的實現可以基於JMS,也可以基於其他規范或標准。
支持JMS的開源MQ:
目前選擇的最多的是ActiveMQ。
ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息總線。
ActiveMQ 是一個完全支持JMS1.1和J2EE 1.4規范的 JMS Provider實現,盡管JMS規范出台已經是很久的事情了,但是JMS在當今的J2EE應用中間仍然扮演着特殊的地位。
主要特點:
1. 多種語言和協議編寫客戶端。語言: Java, C, C++, C#, Ruby, Perl, Python, PHP。應用協議: OpenWire,Stomp REST,WSNotification,XMPP,AMQP;
2. 完全支持JMS1.1和J2EE 1.4規范 (持久化,XA消息,事務);
3. 對Spring的支持,ActiveMQ可以很容易內嵌到使用Spring的系統里面去,而且也支持Spring2.0的特性;
4. 通過了常見J2EE服務器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的測試,其中通過JCA 1.5 resource adaptors的配置,可以讓ActiveMQ可以自動的部署到任何兼容J2EE 1.4 商業服務器上;
5. 支持多種傳送協議:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA;
6. 支持通過JDBC和journal提供高速的消息持久化;
7. 從設計上保證了高性能的集群,客戶端-服務器,點對點;
8. 支持Ajax;
9. 支持與Axis的整合;
10. 可以很容易得調用內嵌JMS provider,進行測試;
11. ActiveMQ速度非常快;一般要比jbossMQ快10倍。
優點:
是一個快速的開源消息組件(框架),支持集群,同等網絡,自動檢測,TCP,SSL,廣播,持久化,XA,和J2EE1.4容器無縫結合,並且支持輕量級容器和大多數跨語言客戶端上的Java虛擬機。
消息異步接受,減少軟件多系統集成的耦合度。
消息可靠接收,確保消息在中間件可靠保存,多個消息也可以組成原子事務。
缺點:
ActiveMQ默認的配置性能偏低,需要優化配置,但是配置文件復雜,ActiveMQ本身不提供管理工具;
示例代碼少;主頁上的文檔看上去比較全面,但是缺乏一種有效的組織方式,文檔只有片段,用戶很難由淺入深進行了解,
文檔整體的專業性太強。在研究階段可以通過查maillist、看Javadoc、分析源代碼來了解。