Listing ActiveMQ queues with JMX and Groovy

The following groovy script displays a list of queues in ActiveMQ with some statistics per queue.

import javax.management.* 
import javax.management.remote.* 
import javax.lang.management.*

def serverUrl = 'service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi'

def env = [(JMXConnector.CREDENTIALS): ["smx","smx"] as String[]] 
def jmxUrl = new JMXServiceURL(serverUrl) 
def connect = JMXConnectorFactory.connect(jmxUrl,env) 
def server = connect.MBeanServerConnection

def query = new ObjectName('org.apache.activemq:Type=Queue,*') 
def queues = server.queryNames(query,null) 
printf "%-50s, %7s, %7s, %7s, %7s, %7s, %7s, %7s, %7s, %7sn", "Name", "Avg QT", "Max QT", "Min QT", "Enq Cnt", "Dsp Cnt", "Exp Cnt", "Inf Cnt", "Consumrs", "Producr"

printf "%-50s, %7s, %7s, %7s, %7s, %7s, %7s, %7s, %7s, %7sn", "----", "------", "------", "------", "-------", "-------", "-------", "-------", "--------", "-------"

queues.each { queue -> 
        def queueBean = new GroovyMBean(server,queue) 
        printf "%-50s, %7.2g, %7.2g, %7.2g, %7s, %7s, %7s, %7s, %7s, %7sn", 
                queueBean.Name, 
                queueBean.AverageEnqueueTime as Float, queueBean.MaxEnqueueTime as Float, queueBean.MinEnqueueTime as Float,

                queueBean.EnqueueCount, queueBean.DispatchCount, queueBean.ExpiredCount, queueBean.InFlightCount, 
                queueBean.ConsumerCount, queueBean.ProducerCount 
} 
blog comments powered by Disqus