package org.apache.activemq.book.ch14.jmx;
import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import org.apache.activemq.broker.jmx.BrokerViewMBean;
import org.apache.activemq.broker.jmx.QueueViewMBean;
public class Stats {
public static void main(String[] args) throws Exception {
JMXServiceURL url = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://localhost:2011/jmxrmi");
JMXConnector connector = JMXConnectorFactory.connect(url, null);
connector.connect();
MBeanServerConnection connection = connector.getMBeanServerConnection();
ObjectName name = new ObjectName(
"my-broker:BrokerName=localhost,Type=Broker");
BrokerViewMBean mbean = (BrokerViewMBean) MBeanServerInvocationHandler
.newProxyInstance(connection, name, BrokerViewMBean.class, true);
System.out.println("Statistics for broker " + mbean.getBrokerId() + " - " + mbean.getBrokerName());
System.out.println("\n-----------------\n");
System.out.println("Total message count: " + mbean.getTotalMessageCount() + "\n");
System.out.println("Total number of consumers: " + mbean.getTotalConsumerCount());
System.out.println("Total number of Queues: " + mbean.getQueues().length);
for (ObjectName queueName : mbean.getQueues()) {
System.out.println(queueName);
QueueViewMBean queueMbean = (QueueViewMBean) MBeanServerInvocationHandler
.newProxyInstance(connection, queueName,
QueueViewMBean.class, true);
System.out.println("\n-----------------\n");
System.out.println("Statistics for queue " + queueMbean.getName());
System.out.println("Size: " + queueMbean.getQueueSize());
System.out.println("Number of consumers: " + queueMbean.getConsumerCount());
}
}
}