天天看點

activeMQ

ActiveMQ is the most popular and powerful open source Message

Bus.ActiveMQ 是一個完全支援JMS1.1和J2EE 1.4規範的 JMS

Provider實作,盡管JMS規範出台

已經是很久的事情了,但是JMS在當今的J2EE應用中間仍然扮演着特殊的地位。

下面是它的特性清單

多種語言和協定編寫用戶端。語言: Java, C, C++, C#, Ruby, Perl, Python, PHP。應用協定:

OpenWire,Stomp REST,WS Notification,XMPP,AMQP

完全支援JMS1.1和J2EE 1.4規範  (持久化,XA消息,事務)

對Spring的支援,ActiveMQ可以很容得内嵌到使用Spring的系統裡面去,而且也支援Spring2.0的特性

通過了常見J2EE伺服器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的測試,其中通過JCA 1.5

resource adaptors的配置,可以讓ActiveMQ可以自動的部署到任何相容J2EE 1.4 商業伺服器上

支援多種傳送協定:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA

支援通過JDBC和journal提供高速的消息持久化

從設計上保證了高性能的叢集,用戶端-伺服器,點對點

支援Ajax

支援與Axis的整合

可以很容易得調用内嵌JMS provider,進行測試

<!--[if

!supportLists]-->二.   <!--[endif]-->ActiveMQ的競争者   

1,其他開源 JMS provider(資料來自 java-source.net)

:

        jbossmq(jboss

4)

        jboss messaging (jboss

5)

        joram-4.3.21 

2006-09-22

openjms-0.7.7-alpha-3.zip December 26,

2005

        mantamq

  ubermq  

SomnifugiJMS  2005-7-27

開源的JMS Provider大部分都已經停止發展了,剩下的幾個都是找到了東家,和某種J2EE 伺服器挂鈎,比如jboss

mq與jboss,joram與jonas(objectweb組織),ActiveMQ 與Geronimo(ASF

APACHE基金組織),而在這3個之間,從網絡底層來看,隻有ActiveMQ使用了NIO,單從這個角度來看ActiveMQ在性能上會有一定的優勢。     

2.商業JMS provider

        IBM WebSphere

MQ

        BEA WebLogic

JMS

        Oracle

AQ 

        NonStop Server for Java

Message Service(JMS)

        Sun Java

System Message Queue

        Sonic

jms

        TIBCO Enterprise For

        iLinkMQ (國内)

 現在的商業J2EE 應用伺服器大部分都會有JMS Provider的實作,畢竟應用伺服器都已經花費不薄,也不在乎在裡面送一個JMS

Provider了,當然還是有獨立的比如IBM WebSphere MQ,Sonic JMS ,前者肯定是商用MQ(這個概念不僅僅是JMS

Provier了,隻能說JMS 隻是它提供的一個應用)中間的巨無霸了。

 從這點來看,ActiveMQ明顯的競争者并不多,因為它是作為獨立的開源JMS

Provider出現的,很容易被用于多種結構設計中,使用ActiveMQ作為預設JMS

Provider的開源項目有ServiceMix,Geronimo. 

三.安裝ActiveMQ

       首先去http://activemq.apache.org/download.html 下載下傳最新版本4.1.0release, 解壓apache-activemq-4.1-incubator.zip(或者apache-activemq-4.1-incubator.tar.gz)目錄如下:

+bin      

(windows下面的bat和unix/linux下面的sh)

+conf     

(activeMQ配置目錄,包含最基本的activeMQ配置檔案)

+data     

(預設是空的)

+docs     

(index,replease版本裡面沒有文檔,-.-b不知道為啥不帶)

+example   (幾個例子

+lib      

(activemMQ使用到的lib)

-apache-activemq-4.1-incubator.jar 

(ActiveMQ的binary)

-LICENSE.txt       

-NOTICE.txt        

-README.txt

-user-guide.html

       你可以使用bin/activemq.bat(activemq) 啟動,如果一切順利,你就會看見類似下面的資訊:

幾個小提示

1. 這個僅僅是最基礎的ActiveMQ的配置,很多地方都沒有配置是以不要直接使用這個配置用于生産系統

2. 有的時候由于端口被占用,導緻ActiveMQ錯誤,ActiveMQ可能需要以下端口1099(JMX),61616(預設的TransportConnector)

3. 如果沒有實體網卡,或者MS的LoopBackAdpater Multicast會報一個錯誤

!supportLists]-->四.   <!--[endif]-->測試你的ActiveMQ

由于ActiveMQ是一個獨立的jms

provider,是以我們不需要其他任何第三方伺服器就可以馬上做我們的測試了.編譯example目錄下面的程式ProducerTool/ConsumerTool 是JMS參考裡面提到的典型應用,Producer産生消息,Consumer消費消息,而且這個例子還可以加入參數幫助你測試剛才啟動的本地ActiveMQ或者是遠端的ActiveMQ

ProducerTool [url]

broker的位址,預設的是tcp://localhost:61616 

[true|flase] 是否使用topic,預設是false

    [subject]

subject的名字,預設是TOOL.DEFAULT

[durabl] 是否持久化消息,預設是false

[messagecount] 發送消息數量,預設是10

[messagesize] 消息長度,預設是255

    [clientID]

durable為true的時候,需要配置clientID

[timeToLive] 消息存活時間 

[sleepTime] 發送消息中間的休眠時間

[transacte]  是否采用事務

ConsumerTool [url] broker的位址,預設的是tcp://localhost:61616

[maxiumMessages] 接受最大消息數量,0表示不限制

[sleepTime]  接受消息中間的休眠時間,預設是0,onMeesage方法不休眠

[receiveTimeOut] 接受逾時

我們可以這樣使用:

  先啟動activeMQ,再打開兩個指令視窗,都進入D:/activemq/example,一個運作:ant

consumer,一個運作:ant producer,如果成功發送/接收了消息就OK了。