2011-10-10 10 views
8

¿Cómo obtener la longitud de la cola (cantidad de mensajes no consumidos enviados a la cola) en ActiveMQ, usando Java?¿Alguna forma simple de obtener la longitud de cola de un ActiveMQ?

+0

Debe utilizar JMX, ya que la interfaz Queue no proporciona dicha información. Referencia: [ActiveMQ JMX] (http://activemq.apache.org/jmx.html), [MBeans obligatorios] (http://activemq.apache.org/jmx-support.html) Ejemplo: [administración de ActiveMQ con JMX APIs] (http://www.consulting-notes.com/2010/08/monitoring-and-managing-activemq-with.html) – Dag

Respuesta

9

Debe usar JMX, ya que la interfaz Queue no proporciona dicha información.

Ejemplo de recuperar el tamaño de una cola específica:

// connection 
String url = "service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi"; 
JMXConnector connector = JMXConnectorFactory.connect(new JMXServiceURL(url)); 
MBeanServerConnection connection = connector.getMBeanServerConnection(); 
// get queue size 
ObjectName nameConsumers = new ObjectName("org.apache.activemq:type=Broker,brokerName=localhost,destinationType=Queue,destinationName=myqueue"); 
DestinationViewMBean mbView = MBeanServerInvocationHandler.newProxyInstance(connection, nameConsumers, DestinationViewMBean.class, true); 
long queueSize = mbView.getQueueSize(); 

Referencia: ActiveMQ JMX, Required MBeans

Ejemplo: managing ActiveMQ with JMX APIs

+0

Gracias por la pista, pero utilicé Next ObjectName: "org.apache.activemq: BrokerName = localhost, Type = Queue, Destination = queueName "y QueueViewMBean class para obtener queueViewMBean. En general, el enfoque fue el mismo –

5

gusta esta;

QueueBrowser browser = session.createBrowser(queue); 
Enumeration enu = browser.getEnumeration(); 
List list = new ArrayList();   
    while (enu.hasMoreElements()) { 
    TextMessage message = (TextMessage) enu.nextElement();   
    list.add(message.getText()); 
    } 
System.out.println("Size " + list.size()); 
+3

Nota: a menos que incremente maxPageSize y memoryLimit, solo lo examinará a lo sumo a 400 mensajes: http://betterlogic.com/roger/2012/06/activemq-browse- all-messages – rogerdpack

+4

Leerá todos los mensajes del intermediario al consumidor para simplemente contarlo, ¿en serio? – deFreitas

Cuestiones relacionadas