Java操做 ActiveMQ 远程监控JMX设置

activemq.xml设置 第一个配置: 在你下载activemq文件夹下的config中,找到activemq.xml,在broker节点增长useJmx="true" useJmx表示开启jmx监控 这里写图片描述apache

2.在managementContext节点更改url

这里写图片描述

3.修改bin/文件夹中的启动脚本activemqcode

1,Windowsorm

SUNJMX=-Dcom.sun.management.jmxremote.port=11099-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.accessxml

Java查询ActiveMQ队列信息队列

public static void main(String[] args) throws IOException, MalformedObjectNameException {
		String url = "service:jmx:rmi:///jndi/rmi://localhost:11099/jmxrmi";
		JMXServiceURL urls = new JMXServiceURL(url);
		JMXConnector connector = JMXConnectorFactory.connect(urls,null);
		connector.connect();
		MBeanServerConnection conn = connector.getMBeanServerConnection();
		//这里brokerName的b要小些,大写会报错
	    ObjectName name = new ObjectName("org.apache.activemq:brokerName=localhost,type=Broker");
		BrokerViewMBean mBean = (BrokerViewMBean)MBeanServerInvocationHandler.newProxyInstance(conn, name, BrokerViewMBean.class, true);
		for(ObjectName na : mBean.getQueues()){//获取点对点的队列  		mBean.getTopics() 获取订阅模式的队列
			QueueViewMBean queueBean = (QueueViewMBean) 
			MBeanServerInvocationHandler.newProxyInstance(conn, na, QueueViewMBean.class, true);
			System.out.println("******************************");
			System.out.println("队列的名称:"+queueBean.getName());
			System.out.println("队列中剩余的消息数:"+queueBean.getQueueSize());
			System.out.println("消费者数:"+queueBean.getConsumerCount());
			System.out.println("出队列的数量:"+queueBean.getDequeueCount());
		}
	}

这里写图片描述

相关文章
相关标签/搜索