ActiveMQ的JMX监控使用

package easyway.app.activemq.demo3;

import javax.management.ObjectName;

import org.apache.activemq.broker.jmx.BrokerViewMBean;
import org.apache.activemq.web.RemoteJMXBrokerFacade;
import org.apache.activemq.web.config.SystemPropertiesConfiguration;
/**
 * 
 * RemoteJMXBrokerFacade 访问ActiveMQ JMX配置
 * @author   longgangbai   
 *
 */
public class ActiveMQJMX {
	/**
	 *       通过JMX获取ActiveMQ各种信息
	 * @param args
	 */
	public static void main(String[] args) { 
		RemoteJMXBrokerFacade createConnector = new RemoteJMXBrokerFacade(); 
		System.setProperty("webconsole.jmx.url", "service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi"); 
		//System.setProperty("webconsole.jmx.user","controlRole"); 
		//System.setProperty("webconsole.jmx.password","abcd1234"); 
		SystemPropertiesConfiguration configuration = new SystemPropertiesConfiguration(); 
		createConnector.setConfiguration(configuration); 
		try { 
			BrokerViewMBean brokerAdmin = createConnector.getBrokerAdmin(); 
			String brokerName =brokerAdmin.getBrokerName();
			System.out.println("BrokerName ="+brokerName );
			long messages =brokerAdmin.getTotalMessageCount();
			System.out.println("messages ="+messages );
			long consumerCount=brokerAdmin.getTotalConsumerCount();
			System.out.println("consumerCount ="+consumerCount );
			long dequeueCount=brokerAdmin.getTotalDequeueCount();
			System.out.println("dequeueCount ="+dequeueCount );
			long enqueueCount=brokerAdmin.getTotalEnqueueCount();
			System.out.println("enqueueCount ="+enqueueCount );
			
			System.out.println(brokerAdmin.getBrokerName()); 
			//获取Topic相关的ObjectName
			ObjectName[] topicList=brokerAdmin.getTopics();
			System.out.println("topic ="+topicList.length);
			//获取Queue相关的ObjectName
			ObjectName[] queueList=brokerAdmin.getQueues();
			System.out.println("queue ="+queueList.length);
            //根据ObjectName创建相关的JMX对象获取相关的信息。
		} catch (Exception e) { 
			e.printStackTrace(); 
		} 
	}

}

 

ActiveMQ配置安全性

 

监视ActiveMQ的方式有多种,在第一部分中已经说到了Web监视控制台,设置登录用户名和密码,这里再说一下JMX监控。运行了ActiveMQ之后,再运行jdk自带的jconsole即可以看到ActiveMQ的进程,如图:点击连接之后就可以看到ActiveMQ的运行情况。默认情况下是不需要用户名和口令的,修改activemq.bat,找到

修改成

Linux下的找到:

去掉注释即可。
重启ActiveMQ之后,在用jconsole连接就需要输入用户名和密码,jmx.access文件配置用户的访问权限readonly和readwrite,admin readwrite表示用户admin具有读写权限。Jmx.password文件配置用户的密码,admin activemq 表示admin用户的密码是activemq。

除了监视台可以设置用户名和密码之后,ActiveMQ也可以对各个主题和队列设置用户名和密码,配置如下:

simpleAuthenticationPlugin中设置用户名、密码和群组,authorizationPlugin设置主题和队列的访问群组,“>”表示所有的主题或者队列。上面的配置中添加了一个testUser,属于群组testGroup,同时设置test这个队列的访问读写权限为testGroup,当然admins也可以访问的,因为admins是对所有的队列都有访问权限。将第三部分代码中的设置用户名和密码改成刚刚添加的用户testUser,如果密码不正确,将会抛出User name or password is invalid.异常,如果testUser所属的群组不能访问test队列,那么会抛出User guest is not authorized to write to: queue://test异常。需要注意的是所有的群组都需要对以ActiveMQ.Advisory为前缀的主题具有访问权限。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值