How to get consumer count using JMX API in ActiveMQ
first, get a connection to a JMX server (assumes localhost, port 9010, no auth)
First you need to start activemq with jmx service. Add below jvm parameters to java opts-
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.rmi.port=9011 -Djava.rmi.server.hostname=localhost -Dcom.sun.management.jmxremote.local.only=false
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9010/jmxrmi");JMXConnector jmxc = JMXConnectorFactory.connect(url);MBeanServerConnection conn = jmxc.getMBeanServerConnection();ObjectName activeMQ = new ObjectName("org.apache.activemq:type=Broker,brokerName=localhost");BrokerViewMBean mbean = (BrokerViewMBean) MBeanServerInvocationHandler.newProxyInstance(conn,activeMQ, BrokerViewMBean.class, true);for (ObjectName name : mbean.getQueues()) {QueueViewMBean queueMbean = (QueueViewMBean) MBeanServerInvocationHandler.newProxyInstance(conn, name, QueueViewMBean.class, true);String queueName = queueMbean.getName();long count = queueMbean.getConsumerCount()}
queue monitoring - getEnqueueCount(), getDequeueCount(), getConsumerCount(), etc...
Comments
Post a Comment