概述
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文件:
![](https://i-blog.csdnimg.cn/blog_migrate/20a94f10ed29fb93827110b2c4187b5a.png)
File - New Connection(Ctrl + W)
![](https://i-blog.csdnimg.cn/blog_migrate/9be638e10f1edc116d934b9294bfbffd.png)
看来,我们需要为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。
关于用户名和密码:如果没有配置就不用填写,我没有研究怎么去配置,如果你研究了,并且配置了,自然知道是什么。
![](https://i-blog.csdnimg.cn/blog_migrate/d87eae612cf06fdb278b8e9aed29e9b0.png)
点击OK:
![](https://i-blog.csdnimg.cn/blog_migrate/e46dca17416f8ca551a742996e7543aa.png)
建立连接成功,并且我们可以看到有一个asj.log的queue,且里面有9条消息。
6.刷新和查看
如果有新的消息入队,需要刷新才能看到。
Display - Refresh ... (Ctrl + R)
双击一条消息,可以查看其内容:
![](https://i-blog.csdnimg.cn/blog_migrate/28fcfdcafc0b55075104450774180d94.png)
再次说明:消息的内容,是调用对象的toString方法获得的结果。请确保class文件加入了
ActiveMQBrowser的classpath,否则会遇到
ClassNotFoundException。