一、為什么使用ActiveMQ
在總線的設計中可能會使用到JMS(Java Message Service)通道, Java消息服務(JMS)超越了生產商專有的MOM(Message-Oriented-MiddleWare) API,它為企業消息傳遞提供了一套API。JMS的目標是提供一個標准API,使用Java語言,以生產商中立的方式來發送和接收消息。JMS API最小化了一個Java編程者應具備的企業消息傳遞的知識量,來開發復雜消息傳遞應用程序,而仍能維持一定的跨JMS提供者實現的可移植性。
JMS本身不是一個MOM。它是一套API,抽象了消息傳遞客戶端與MOM間的交互,類似於JDBC抽象了關系型數據庫的交互。應用間的通信是通過應用1組織一個JMS消息使用JMS API發送到MOM,應用2通過JMS API接收到該消息進行處理,可以實現對消息同步或異步的處理,在我們的項目中是使用的MOM是ActiveMQ------ 一個開源的消息中間件。
二、總線中使用的ActiveMQ的版本及說明
在總線中使用的ActiveMQ的版本是5.3.0,下載地址是http://activemq.apache.org/download.html,ActiveMQ需要的jdk的版本最低是1.5所以在安裝ActiveMQ之前一定確定jdk的版本是1.5之后的,ActiveMQ5.3.0是免安裝的下載完之后解壓到相應的位置,打開根目錄就會看到有以下文件:
圖一ActiveMQ的目錄格式
* LICENSE——包含ActiveMQ所使用庫的license。
* NOTICE——它包含ActiveMQ使用庫的版權信息
* README.txt——新手文檔
* webConsole-README.txt——包含使用ActiveMQWeb Conslole的信息。
* activemq-all-5.3.0.jar——包含了ActiveMQ所有內容;方便使用它,在使用activeMQ的地方直接導入這一個jar包就夠了。
* bin——包含了ActiveMQ的二進制/可執行文件;啟動腳本也在該目錄下
* conf——持有ActiveMQ所有配置信息
* data——日志文件和消息持久數據保存在此目錄下。
* docs——包含一個簡單的index.html文件,它指向ActiveMQ網址
* example——示例;我們將用它來快速測試ActiveMQ
* lib——lib目錄持有所有ActiveMQ所需的庫
* user-guide.html——啟動ActiveMQ和運行示例的簡短指南
* webapps——webapps目錄持有ActiveMQ web console和一些其它web相關的demo
三、啟動並使用ActiveMQ控制台
進入到ActiveMQ\bin目錄下找到activemq.bat點擊啟動activeMQ,正常啟動的界面如下:
圖二ActiveMQ正常啟動界面
訪問http://localhost:8161/admin/index.jsp查看ActiveMQ的管理界面在該界面中可以添加、刪除、清空查看隊列主題的消息信息以及新建、刪除主題和隊列等功能,控制台的使用很簡單這里不再贅述了。
圖三ActiveMQ控制台
四、從一個簡單的實例看ActiveMQ的使用
該例子是一個簡單的發送消息的例子:例子向ieslab.chen發送一條TextMessage消息,消息的內容是Hello world!借助控制台看一下:點擊控制台上的Queue鏈接,然后可以看到一個name下面有個ieslab.chen的隊列如圖四所示:
圖四 通過控制台查看消息
控制台中顯示的Name:是隊列的名字,Number OfPending Messages是等待消費的消息的數量,Number Of Consumers是消費者的數量,Messages Enqueued是隊列中的消息,Messages Dequeued是被消費的消息的數量,Views可以查看可以指定一個消費者,Operation指定了對該隊列的操作:發送、清空、刪除。點擊這個隊列的名字jms.ieslab.chen就可以看到這個隊列中的消息點擊某個消息就可以看到消息的詳細信息如圖五所示:
圖五 利用控制台查看消息的詳細信息
以下是實例中用到的代碼:(注意*prop.setProperty(Context.PROVIDER_URL,"tcp://localhost:61616");//172.20.9.39這個地方一定要注意在activeMQ的根目錄下有個conf文件夾下的activemq.xml是設置了activeMQ的詳細信息下面有個關於連接的配置如下代碼:<transportConnectors>
<transportConnector name="openwire"uri="tcp://localhost:61616"/>
<!--transportConnectorname="openwire1" uri="tcp://0.0.0.0:61617"/ -->
</transportConnectors>
如果你的activemq.xml中也設置的tcp連接是localhost那你不能在代碼中使用你自己的ip也就是說不能寫成這樣prop.setProperty(Context.PROVIDER_URL, "tcp:// 172.20.9.39:61616")(172.20.9.39是我的ip))。
---------------------
作者:瓜瓜東西
來源:CSDN
原文:https://blog.csdn.net/cgwcgw_/article/details/17750493
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!