天天看點

ActiveMQ 即時通訊服務 淺析

<b>一、 </b><b>概述與介紹</b><b></b>

<b></b>

<b>二、 </b><b>特性</b><b></b>

1、 多種語言和協定編寫用戶端。語言: Java、C、C++、C#、Ruby、Perl、Python、PHP。應用協定:OpenWire、Stomp REST、WS Notification、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,進行測試

<b>三、 </b><b>安裝</b>

開發環境: System:Windows JDK:1.6+ IDE:eclipse apache ActiveMQ 5.8
<a href="http://hoojo.cnblogs.com/">http://hoojo.cnblogs.com/</a>
2、 解壓apache-activemq-5.8.0.zip即可完成ActiveMQ的安裝 3、 解壓後目錄結構如下
ActiveMQ 即時通訊服務 淺析
+bin (windows下面的bat和unix/linux下面的sh) 啟動ActiveMQ的啟動服務就在這裡 +conf (activeMQ配置目錄,包含最基本的activeMQ配置檔案) +data (預設是空的) +docs (index,replease版本裡面沒有文檔) +example (幾個例子) +lib (activeMQ使用到的lib) +webapps (系統管理者控制台代碼) +webapps-demo(系統示例代碼) -activemq-all-5.8.0.jar (ActiveMQ的binary) -user-guide.html (部署指引) -LICENSE.txt -NOTICE.txt -README.txt 其他檔案就不相信介紹了,搞Java的應該都知道幹什麼用的。 你可以進入bin目錄,使用activemq.bat輕按兩下啟動(windows使用者可以選擇系統位數,如果你是linux的話,就用指令行的發送去啟動),如果一切順利,你就會看見類似下面的資訊:
ActiveMQ 即時通訊服務 淺析
如果你看到這個,那麼恭喜你成功了。如果你啟動看到了異常資訊: Caused by: java.io.IOException: Failed to bind to server socket: tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireformat.maxFrameSize=104857600 due to: java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind 那麼我告訴你,很不幸,你的端口被占用了。接下來你大概想知道是哪個程式占用了你的端口,并kill掉該程序或服務。或者你要嘗試修改ActiveMQ的預設端口61616(ActiveMQ使用的預設端口是61616),在大多數情況下,占用61616端口的是Internet Connection Sharing (ICS) 這個Windows服務,你隻需停止它就可以啟動ActiveMQ了。
ActiveMQ 即時通訊服務 淺析
其中在導航菜單中,Queues是隊列方式消息。Topics是主題方式消息。Subscribers消息訂閱監控查詢。Connections可以檢視連結數,分别可以檢視xmpp、ssl、stomp、openwire、ws和網絡連結。Network是網絡連結數監控。Send可以發送消息資料。 當然你還可以用絕對的檔案目錄方式:activemq.bat xbean:file:D:/mq/conf/activemq-demo.xml
ActiveMQ 即時通訊服務 淺析
ActiveMQ 即時通訊服務 淺析

<b>四、 </b><b>消息示例</b><b></b>

<b>JMS </b><b>公共</b> <b>點對點域</b> <b>釋出/訂閱域</b> ConnectionFactory QueueConnectionFactory TopicConnectionFactory Connection QueueConnection TopicConnection Destination Queue Topic Session QueueSession TopicSession MessageProducer QueueSender TopicPublisher MessageConsumer QueueReceiver TopicSubscriber (1)、點對點方式(point-to-point) 點對點的消息發送方式主要建立在 Message Queue,Sender,reciever上,Message Queue 存貯消息,Sneder 發送消息,receive接收消息.具體點就是Sender Client發送Message Queue ,而 receiver Cliernt從Queue中接收消息和"發送消息已接受"到Quere,确認消息接收。消息發送用戶端與接收用戶端沒有時間上的依賴,發送用戶端可以在任何時刻發送資訊到Queue,而不需要知道接收用戶端是不是在運作 (2)、釋出/訂閱 方式(publish/subscriber Messaging) 釋出/訂閱方式用于多接收用戶端的方式.作為釋出訂閱的方式,可能存在多個接收用戶端,并且接收端用戶端與發送用戶端存在時間上的依賴。一個接收端隻能接收他建立以後發送用戶端發送的資訊。作為subscriber ,在接收消息時有兩種方法,destination的receive方法,和實作message listener 接口的onMessage 方法。
2、ActiviteMQ接收和發送消息基本流程
ActiveMQ 即時通訊服務 淺析
發送消息的基本步驟: (1)、建立連接配接使用的工廠類JMS ConnectionFactory (2)、使用管理對象JMS ConnectionFactory建立連接配接Connection,并啟動 (3)、使用連接配接Connection 建立會話Session (4)、使用會話Session和管理對象Destination建立消息生産者MessageSender (5)、使用消息生産者MessageSender發送消息 消息接收者從JMS接受消息的步驟 (5)、使用消息接收者MessageReceiver接受消息,需要用setMessageListener将MessageListener接口綁定到MessageReceiver消息接收者必須實作了MessageListener接口,需要定義onMessage事件方法。

<b>五、 </b><b>代碼示例</b><b></b>

在代碼開始,我們先建一個project,在這個project中添加如下jar包

ActiveMQ 即時通訊服務 淺析

添加完jar包後就可以開始實際的代碼工作了。

1、 使用JMS方式發送接收消息 消息發送者

  接受者

2、 Queue隊列方式發送點對點消息資料 發送方

接收方

3、 Topic主題釋出和訂閱消息 消息發送方
4、 整合Spring實作消息發送和接收,在整合之前我們需要添加jar包,需要的jar包如下
ActiveMQ 即時通訊服務 淺析
這些jar包可以在D:\apache-activemq-5.8.0\lib這個lib目錄中找到,添加完jar包後就開始編碼工作。

消息接收者

這裡主要是用到了JmsTemplate這個消息模闆,這個對象在spring的IoC容器中管理,是以要從spring的容器上下文中擷取。下面看看spring的配置檔案applicationContext-beans.xml内容:

這裡的整合就比較簡單了,如果你是web工程,那你在需要用jms的時候,隻需用注入jmsTemplate即可。

本文轉自hoojo部落格園部落格,原文連結:http://www.cnblogs.com/hoojo/p/active_mq_jms_apache_activeMQ.html,如需轉載請自行聯系原作者