概述


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:
 echo off
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个地方需要注意:
  1. broker配置属性useJmx="true"

     <broker xmlns="http://activemq.apache.org/schema/core"
    brokerName="amq1-broker" supportFailOver="true" useJmx="true"
    destroyApplicationContextOnStop="true">
    .....
    </broker>
  2. 配置managementContext[2]
     <managementContext>
    <managementContext createConnector="true"
    connectorPort="1099" />
    </managementContext>

    这里的connectorPort就是JMX的监听端口。

  3. 配置transportConnectors[3]
     <transportConnectors>
    <transportConnector name="default"
    uri="tcp://localhost:57015" />
    </transportConnectors>

    这里的uri,就是connection的监听地址。

 
注:
[1] 在公司的框架中,这个文件放在resources/META-INF下。
[2] 我曾经尝试把监听端口配置在properties文件,在activemq引入properties文件,但是没能解析成功。
[3] 在公司的框架中,实际内容是
 <transportConnectors>
<transportConnector name="default"
uri="tcp://${activemq.listenaddress}" />
</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。

AMQ学习笔记 - 20. 使用Apache ActiveMQBrowser监控ActiveMQ的更多相关文章

  1. AMQ学习笔记 - 15. 实践方案:基于ActiveMQ的统一日志服务

    概述 以ActiveMQ + Log4j + Spring的技术组合,实现基于消息队列的统一日志服务. 参考:Spring+Log4j+ActiveMQ实现远程记录日志——实战+分析 与参考文章的比较 ...

  2. Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法

    Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法 在上一篇笔记中我们介绍了Ext.Net的简单用法,并创建了一个简单的登录表单.今天我们将看一下如何更好是使用FormPanel ...

  3. SQL反模式学习笔记20 明文密码

    目标:恢复或重置密码 反模式:使用明文存储密码 1.存储密码 使用明文存储密码或者在网络上传递密码是不安全的. 如果攻击者截取到你用来插入(或者修改)密码的sql语句,就可以获得密码.     黑客获 ...

  4. golang学习笔记20 一道考察对并发多协程操作一个共享变量的面试题

    golang学习笔记20 一道考察对并发多协程操作一个共享变量的面试题 下面这个程序运行的能num结果是什么? package main import ( "fmt" " ...

  5. [原创]java WEB学习笔记20:MVC案例完整实践(part 1)---MVC架构分析

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  6. ‎Cocos2d-x 学习笔记(20) ControlButton

    [Cocos2d-x 学习笔记 目录链接] 1. 简介 ControlButton实现了按钮功能,根据触摸的位置和移动的过程可识别9中EventType类型,执行对应的回调函数. 直接继承了Contr ...

  7. Hadoop学习笔记—20.网站日志分析项目案例

    1.1 项目来源 本次要实践的数据日志来源于国内某技术学习论坛,该论坛由某培训机构主办,汇聚了众多技术学习者,每天都有人发帖.回帖,如图1所示. 图1 项目来源网站-技术学习论坛 本次实践的目的就在于 ...

  8. Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍

    网站日志分析项目案例(一)项目介绍:当前页面 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edisonchou/p/4458219.html 网站日志分析项目案例 ...

  9. Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗

    网站日志分析项目案例(一)项目介绍:http://www.cnblogs.com/edisonchou/p/4449082.html 网站日志分析项目案例(二)数据清洗:当前页面 网站日志分析项目案例 ...

随机推荐

  1. NHibernate教程

    NHibernate教程 一.NHibernate简介 在今日的企业环境中,把面向对象的软件和关系数据库一起使用可能是相当麻烦.浪费时间的.NHibernate是一个面向.Net环境的对象/关系数据库 ...

  2. 如何快速检查js语法学习Javascript

    这里给大家推荐一个快速进行语法检查的方法,可以发现绝大多数语法错误,也可以作为在线编辑器,提高编程效率. 地址:http://www.jslint.com/ 同时推荐一个在线学习Javascript的 ...

  3. Python练习题 026:求100以内的素数

    [Python练习题 026] 求100以内的素数. ------------------------------------------------- 奇怪,求解素数的题,之前不是做过了吗?难道是想 ...

  4. Conversions

    Problem Description Conversion between the metric and English measurement systems is relatively simp ...

  5. #pragma weak

    采用 #pragma weak name 形式时,指令使 name 成为弱符号.链接程序没有找到 name 的符号定义时,不会显示错误消息,也不会出现符号的多个弱定义的错误消息.链接程序仅执行第一个遇 ...

  6. Java学习笔记——内部类及其调用方法

    一.static内部类的static方法 public class Test0719_Inner_Test { public static void main(String[] args) { //s ...

  7. Java为什么只能单继承?

    就是因为C++里多重继承功能强大但是容易出错,Java才给取消掉了.如果,A和B都继承于C,再写个D继承A和B.那么C里面有个方法,A和B继承过去后都进行了覆盖,那么D到底是该继承A里面的版本呢还是B ...

  8. ng-sortable-支持触屏的拖拽排序

    1.首先是到https://github.com/a5hik/ng-sortable/tree/master/dist下载所需的文件:ng-sortable.min.js,ng-sortable.cs ...

  9. Win10 VMware虚拟机无法打开内核设备“\\.\Global\vmx86“

    前几项与Win7配置相同 用管理员模式打开CMD 运行 net start vmci net start vmx86 net start VMnetuserif 这三条命令 为了不用每次启动都这样,修 ...

  10. hdu 4494 最小费用流

    思路:这题我在下午重现的时候就用的费用流做,可是各种悲催的超时,只是我一开始的那种建图方式多了一个二分查找. 戏剧性的是,求距离的返回值写成int型了,CodeBlock编译器又没有警告,然后就WA啊 ...