2009-06-24
Apache ActiveMQ教程(一)2008-06-03 11:05
一、特性及優勢
1、實現JMS1.1規範,支援J2EE1.4以上
2、可運行於任何jvm和大部分web容器(ActiveMQ
works great in any JVM)
3、支援多種語言用戶端(java, C, C++, AJAX, ACTIONSCRIPT等等)
4、支援多種協議(stomp,openwire,REST)
5、良好的spring支援(ActiveMQ
has great Spring Support)
6、速度很快,JBossMQ的十倍(ActiveMQ
is very fast; often 10x faster than JBossMQ.)
7、與OpenJMS、JbossMQ等開源jms
provider相比,ActiveMQ有Apache的支援,持續發展的優勢明顯。
二、下載部署
1、下載
http://activemq.apache.org/activemq-510-release.html,下載5.1.0
Windows Distribution版本
2、安裝
直接解壓至任意目錄(如:d:/ apache-activemq-5.1.0)
3、啟動ActiveMQ伺服器
方法1:
直接運行bin/activemq.bat
方法2(在JVM中嵌套啟動):
cd example
ant embedBroker
4、ActiveMQ訊息管理後台系統:
http://localhost:8161/admin
三、運行附帶的樣本程式
1、Queue訊息樣本:
*
啟動Queue訊息消費者
cd example
ant consumer
*
啟動Queue訊息生產者
cd example
ant producer
簡要說明:生產者(producer)發訊息,消費者(consumer)接訊息,發送/接收2000個訊息後自動關閉
2、Topic訊息樣本:
*
啟動Topic訊息消費者
cd example
ant topic-listener
*
啟動Topic訊息生產者
cd example
ant topic-publisher
簡要說明:重複10輪,publisher每輪發送2000個訊息,並等待擷取listener的處理結果報告,然後進入下一輪發送,最後統計全域發送時間。
四、Queue與Topic的比較
1、JMS Queue執行load
balancer語義:
一條訊息僅能被一個consumer收到。如果在message發送的時候沒有可用的consumer,那麼它將被儲存一直到能處理該message的consumer可用。如果一個consumer收到一條message後卻不響應它,那麼這條訊息將被轉到另一個consumer那兒。一個Queue可以有很多consumer,並且在多個可用的consumer中負載平衡。
2、Topic實現publish和subscribe語義:
一條訊息被publish時,它將發到所有感興趣的訂閱者,所以零到多個subscriber將接收到訊息的一個拷貝。但是在訊息代理接收到訊息時,只有啟用訂閱的subscriber能夠獲得訊息的一個拷貝。
3、分別對應兩種訊息模式:
Point-to-Point (點對點),Publisher/Subscriber Model (發布/訂閱者)
其中在Publicher/Subscriber
模式下又有Nondurable subscription(非持久訂閱)和durable subscription (持久化訂閱)2種訊息處理方式。