概述
Apache ActiveMQBrowser可以用於查看AMQ中的消息。這里對其使用方法進行簡單介紹。
使用介紹
1.下載並解壓縮
下載地址:
Apache ActiveMQBrowser,當前最新的版本是ActiveMQBrowser_2.5.2.8ForJDK1.6。
解壓縮之后可以發現,
ActiveMQBrowser很簡單,只有一級目錄,里面有幾個jar包、幾個txt文件、一個圖片文件、一個bat文件。
2.添加classpath
如果MQ中的消息是ObjectMessage類型,我們需要為
ActiveMQBrowser提供里面封裝的class;這樣,當使用
ActiveMQBrowser時,我們可以查看一個消息的內容。
ActiveMQBrowser調用對象的toString方法來展示消息內容,所以請考慮為類重寫toString方法。
假設
ActiveMQBrowser解壓縮的目錄是AMQB_HOME,在這個目錄下添加classes子目錄,並修改
AMQB_HOME下的run_activemq_browser.bat文件,將classes目錄加入classpath:
1 echo off 2 start "ActiveMQBrowser" javaw -Xms128m -Xmx512m -splash:cube.png -cp .\QBrowserV2_Neo.jar;.\activemq-web-5.6.0.jar;.\activemq-all-5.6.0.jar;.\jide-oss-2.6.2.jar;.\imq.jar;.\jms.jar;.\imqadmin_ja.jar;.\imqadmin.jar;.\imqutil_ja.jar;.\imqutil.jar;.\imqjmx.jar;.\imqjmx_ja.jar;.\classes com.qbrowser.ActiveMQBrowser
將class文件放入classes子目錄。
補充:
在producer-client,你可能使用
javax.jms.Session#createObjectMessage(java.io.Serializable object):ObjectMessage的方式來創建ObjectMessage實例,並發送到AMQ;這里傳入的參數object需要是一個可序列化的對象,就是將這個類對應的class文件,放到上述新建的classes目錄。
3.啟動ActiveMQBrowser
運行
AMQB_HOME下的run_activemq_browser.bat文件:
File - New Connection(Ctrl + W)
看來,我們需要為Connection提供一些參數,包括jmx的監聽地址、用戶名、密碼;connection的監聽地址、用戶名、密碼。到這里我們先放一放,轉去AMQ的配置。
4.AMQ配置
一般來說,AMQ的配置文件是activemq.xml
[1],這個文件有3個地方需要注意:
- broker配置屬性useJmx="true"
1 <broker xmlns="http://activemq.apache.org/schema/core" 2 brokerName="amq1-broker" supportFailOver="true" useJmx="true" 3 destroyApplicationContextOnStop="true"> 4 ..... 5 </broker>
- 配置managementContext[2]
1 <managementContext> 2 <managementContext createConnector="true" 3 connectorPort="1099" /> 4 </managementContext>
這里的connectorPort就是JMX的監聽端口。
- 配置transportConnectors[3]
1 <transportConnectors> 2 <transportConnector name="default" 3 uri="tcp://localhost:57015" /> 4 </transportConnectors>
這里的uri,就是connection的監聽地址。
注:
[1] 在公司的框架中,這個文件放在resources/META-INF下。
[2] 我曾經嘗試把監聽端口配置在properties文件,在activemq引入properties文件,但是沒能解析成功。
[3] 在公司的框架中,實際內容是
1 <transportConnectors> 2 <transportConnector name="default" 3 uri="tcp://${activemq.listenaddress}" /> 4 </transportConnectors>
其中,activemq.listenaddress來自resources/spring-bean-config/activeMQ.properties文件
5.建立連接
現在我們回到ActiveMQBrowser界面,假設我們要監控的AMQ就在本機跑着,jmx、connection監聽地址中的ip部分就是localhost;分別修改監聽端口,根據我們查看AMQ的配置,jmx的端口是1099,connection的端口是57015。
關於用戶名和密碼:如果沒有配置就不用填寫,我沒有研究怎么去配置,如果你研究了,並且配置了,自然知道是什么。
點擊OK:
建立連接成功,並且我們可以看到有一個asj.log的queue,且里面有9條消息。
6.刷新和查看
如果有新的消息入隊,需要刷新才能看到。
Display - Refresh ... (Ctrl + R)
雙擊一條消息,可以查看其內容:
再次說明:消息的內容,是調用對象的toString方法獲得的結果。請確保class文件加入了
ActiveMQBrowser的classpath,否則會遇到
ClassNotFoundException。
