2011-10-10 8 views
8

Come ottenere la lunghezza della coda (numero di messaggi non inviati inviati alla coda) in ActiveMQ, utilizzando Java?Un modo semplice per ottenere la lunghezza della coda di un ActiveMQ?

+0

È necessario utilizzare JMX, poiché l'interfaccia della coda non fornisce tali informazioni. Riferimento: [ActiveMQ JMX] (http://activemq.apache.org/jmx.html), [MBean richiesti] (http://activemq.apache.org/jmx-support.html) Esempio: [gestione di ActiveMQ con JMX API] (http://www.consulting-notes.com/2010/08/monitoring-and-managing-activemq-with.html) – Dag

risposta

9

È necessario utilizzare JMX, poiché l'interfaccia della coda non fornisce tali informazioni.

Esempio di recuperare la dimensione di una specifica coda:

// 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(); 

Riferimento: ActiveMQ JMX, Required MBeans

Esempio: managing ActiveMQ with JMX APIs

+0

Grazie per il suggerimento, ma ho usato il prossimo ObjectName: "org.apache.activemq: BrokerName = localhost, Type = Queue, Destination = queueName "e classe QueueViewMBean per ottenere queueViewMBean. In generale, l'approccio era lo stesso –

5

Ti piace questa;

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

NB: a meno che non si aumenti maxPageSize e memoryLimit, verranno visualizzati al massimo 400 messaggi: http://betterlogic.com/roger/2012/06/activemq-browse-all-messages – rogerdpack

+4

Leggere tutti i messaggi broker al consumatore per contarli semplicemente, davvero? – deFreitas

Problemi correlati