ActiveMQ的特性之一是很好的支持JMX。通过JMX MBeans可以很方便的监听和控制ActiveMQ的broker。

  鉴于官方网站提供的JMX特性说明对于远程访问的配置流程不是很完整,笔者在实际配置时也走了一点弯路。所以本文将根据笔者的实际经验,分别讲解如何在windows和Linux环境下配置ActiveMQ的JMX远程访问。除此之外,还会从“是否是密码保护”的方面讲解。

  本文的JMX客户端环境为Windows7下的JDK1.7。

没有密码保护的远程访问

  没有密码保护的远程访问的配置很简单,只需稍微修改activemq.xml中的配置即可。配置如下:

Window平台下

  在<broker>节点中加入useJmx属性,并修改<managementContext>节点中的createConnector属性:

  1. <broker ... useJmx="true">
  2. ...
  3. <managementContext>
  4. <managementContext createConnector="true"/>
  5. </managementContext>
  6. </broker>

  其中,默认访问端口为1099,也可以通过<managementContext>节点中的connectorPort属性修改。启动activemq后,日志中出现以下信息表示配置成功了。

  1. INFO | JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi

  在windows7命令行中启动jconsole,选择“远程进程”,在URL中输入将localhost替换成实际IP后的上述信息,无需用户名和口令。即可链接成功。如图:

Linux平台下

  Lunix平台的下配置与windows如出一辙,但需额外增加如下配置:

  1. <broker ... useJmx="true">
  2. ...
  3. <managementContext>
  4. <managementContext createConnector="true" connectorHost="本机的IP"/>
  5. </managementContext>
  6. </broker>

或修改Linux服务器系统文件/etc/hosts中的localhost设置,将127.0.0.1更改为实际IP(不建议)。

  否则客户端无法通过将localhost替换成实际IP后远程访问JMX。

有密码保护的远程访问

  有密码保护的配置相对较复杂,需要修改JVM参数,主要步骤如下:

Window平台下

  一、确认ActiveMQ默认的连接器已经关闭。注意createConnector=false

  1. <broker ... useJmx="true">
  2. ...
  3. <managementContext>
  4. <managementContext createConnector="false"/>
  5. </managementContext>
  6. </broker>

  二、确认conf目录下有jmx.access(用户权限)和jmx.password(用户密码)两个文件(安装时默认会有),并按照格式填写内容(参考官方文档)

  三、修改jmx.password的读取权限,目的是除归属用户外,其它用户不能有权限读写,这个是难点,对于笔者使用的win7系统,按如下方式修改。

    右键jmx.password文件>属性>安全>高级>权限,将“包括可从该对象的父项继承的权限”勾掉,弹出警告选择“添加”

    

    然后删除所有用户,一路确定。此时这个文件已经不能访问和修改。若想重新修改内容,右键jmx.password文件>属性>安全>高级>权限>添加,将用户添加进来即可。

  四、修改bin\activemq.bat文件。找到set SUNJMX=语句处,主要不是带REM(注释掉)的那一行将SUNJMX值设置为

  1. set SUNJMX=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1616 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=%ACTIVEMQ_BASE%/conf/jmx.password -Dcom.sun.management.jmxremote.access.file=%ACTIVEMQ_BASE%/conf/jmx.access

  好了,现在通过jconsole远程链接,填写URL,注意端口为1616,输入用户名密码,连接成功。

  关于winxp及其它细节,参考http://docs.oracle.com/javase/1.5.0/docs/guide/management/agent.html#PasswordAccessFiles,和How to a Secure Password File on Microsoft Windows Systems。

Linux平台下

  Linux下的步骤与windows类似:

  一、设置createConnector=false

  二、确认jmx.access和jmx.password两个文件和内容

  三、关于jmx.password文件的权限,Linux下就比较容易,执行以下命令即可

  1. chmod 600 jmxremote.password

  四、修改bin\activemq文件,将以下4行注释放开。注意,这里不是SUNJMX,不与windows一样。

  1. # ACTIVEMQ_SUNJMX_START="-Dcom.sun.management.jmxremote.port=11099"
  2. # ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_CONF}/jmx.password"
  3. # ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_CONF}/jmx.access"
  4. # ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.ssl=false"

  现在,Linux平台下也可以实现有密码保护的远程访问了。

总结

  关于JMX远程访问的配置已全部讲解完毕,总结一下我们主要进行的配置:

  不需要密码时,只修改activemq.xml中的配置即可;

  需要密码时,关掉默认链接,在脚本中修改JVM参数,引向密码文件。难点在于密码文件的权限修改。

ActiveMQ5.10.2版本配置JMX的更多相关文章

  1. 阿里云centos7.4安装并部署svn1.10.0版本(配置多仓库,加入开机自启动)

    如何安装最新版本 1.10.0: 如果已安装旧版本,先卸载 yum remove subversion* 查看当前可安装的版本 yum list | grep subversion 可以去官网下载安装 ...

  2. 汇总10.4版本ArcGIS Server与ArcMap 安装+SDE+注册数据源(非破解)

    文档参考了Server技术支持部各位前辈的总结文档. win10 + Server 10.4 +  ArcMap 10.4 + Oracle instant client (32位 和 64位) 安装 ...

  3. Datatables插件1.10.15版本服务器处理模式ajax获取分页数据实例解析

    一.问题描述 前端需要使用表格来展示数据,找了一些插件,最后确定使用dataTables组件来做. 后端的分页接口已经写好了,不能修改.接口需要传入页码(pageNumber)和页面显示数据条数(pa ...

  4. solr-4.10.2版本使用tomcat7部署

    当前版本仅限于solr-4.10.2版本.默认环境使用的是jdk1.7,tomcat7.环境自己配置.网上一堆堆的. 1.下载相应的文件(solr-4.10.2.zip). 官网地址:http://l ...

  5. opencv学习(1.2) - Windows 10 安装OpenCV &配置VS 2015

    windows 10 安装OpenCV&配置VS 2015 环境 系统:Windows 10 OpenCV版本:3.4.1 开发IDE:VS2015 社区版 下载安装 下载OpenCV 3.4 ...

  6. Mac OS X 10.10 Yosemite下配置 apache+php

    自从系统从OS X Mavericks 10.9升级到OS X Yosemite 10.10 后之前配置apache和php均不能正常使用了, 重新设置配置如下: 首先,查看当前系统的apache版本 ...

  7. 基于Web的Kafka管理器工具之Kafka-manager的编译部署详细安装 (支持kafka0.8、0.9和0.10以后版本)(图文详解)(默认端口或任意自定义端口)

    不多说,直接上干货! 至于为什么,要写这篇博客以及安装Kafka-manager? 问题详情 无奈于,在kafka里没有一个较好自带的web ui.启动后无法观看,并且不友好.所以,需安装一个第三方的 ...

  8. 我的 Windows 10 的基本配置

    Windows 10 的基本配置 功能性 开启 .Net Framework 3.5(包括 .NET 2.0 和 3.0) 旧版本 Windows 10 默认只安装了 .Net Framework 4 ...

  9. CentOS 8及以上版本配置IP的方法,你 get 了吗

    接上篇文章讲了 Ubuntu 18及以上版本的配置方法,本文再来讲讲 CentOS 8 及以上版本配置 IP 的方法. Centos/Redhat(8.x) 配置 IP 方法 说明:CentOS 8 ...

随机推荐

  1. 网络编程——C10K简述

    C10K问题   网络服务在处理数以万计的客户端连接时,往往出现效率底下甚至完全瘫痪,这被成为C10K问题. (C10K = connection 10 kilo 问题).k 表示 kilo,即 10 ...

  2. IOS Exception2 this class is not key value coding-compliant for the key Click

    2015-06-16 23:00:53.706 MyIOSPackage[823:280049] *** Terminating app due to uncaught exception 'NSUn ...

  3. css处理超出文本截断问题的两种情况(多行或者单行)

    1.非多行的简单处理方式: css代码: .words{ width:400px; overflow:hidden; /*超过部分不显示*/ text-overflow:ellipsis; /*超过部 ...

  4. 基于React实现的【绿色版电子书阅读器】,支持离线下载

    代码地址如下:http://www.demodashi.com/demo/12052.html MyReader 绿色版电子书阅读器 在线地址:http://myreader.linxins.com ...

  5. 使用sql语句实现添加、删除约束

    --主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. --唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值. ...

  6. Android 四大组件学习之BroadcastReceiver二

    上节学习了怎样创建一个广播.也尝试接受系统打电话的广播. 本节课学习怎样自己定义广播.自己定义广播实质上也就是创建一个发送广播者,创建一个接受该广播者. 那我们就開始行动吧. 先创建一个发送广播的应用 ...

  7. python 在Windows中描述路径时出现的问题

    问题的根本:windows读取文件可以用\,但在字符串里面\被作为转义字符使用,   python在描述路径时有两种方式: 'd:\\a.txt',转义的方式 r'd:\a.txt',声明字符串不需要 ...

  8. Spring 使用

    一.工具类中使用bean IService service = (IService)ContextLoader.getCurrentWebApplicationContext().getBean(se ...

  9. Atitit.aticmd v4  新特性q39 添加定时器释放功能

    Atitit.aticmd v4  新特性q39 添加定时器释放功能 V1  实现兰cmd V2 标准输入,标准输出,标准错误与重新定向 V3  stdout stderr统一重新定向 V4  添加定 ...

  10. Atitit. C#.net clr 2.0  4.0新特性

    Atitit. C#.net clr 2.0  4.0新特性 1. CLR内部结构1 2. CLR 版本发展史3 3. CLR 2.0 3 4. CLR 4 新特性 概览4 4.1.1.  托管与本地 ...