2011-10-10 33 views
8

Làm thế nào để có được độ dài hàng đợi (số lượng thư chưa gửi được gửi đến hàng đợi) trong ActiveMQ, sử dụng Java?Bất kỳ cách đơn giản nào để có được độ dài hàng đợi của ActiveMQ?

+0

Bạn phải sử dụng JMX, vì giao diện Hàng đợi không cung cấp thông tin như vậy. Tham khảo: [ActiveMQ JMX] (http://activemq.apache.org/jmx.html), [MB cần thiết] (http://activemq.apache.org/jmx-support.html) Ví dụ: [quản lý ActiveMQ với JMX API] (http://www.consulting-notes.com/2010/08/monitoring-and-managing-activemq-with.html) – Dag

Trả lời

9

Bạn phải sử dụng JMX, vì giao diện Hàng đợi không cung cấp thông tin như vậy.

Ví dụ về lấy kích thước của một hàng đợi cụ thể:

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

tham khảo: ActiveMQ JMX, Required MBeans

Ví dụ: managing ActiveMQ with JMX APIs

+0

Cảm ơn gợi ý, nhưng tôi đã sử dụng ObjectName tiếp theo: "org.apache.activemq: BrokerName = localhost, Type = Queue, Destination = queueName "và QueueViewMBean lớp để có được queueViewMBean. Nói chung - phương pháp tiếp cận là cùng một –

5

Như thế này;

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 rằng trừ khi bạn tăng maxPageSize và memoryLimit nó sẽ chỉ duyệt bạn tại hầu hết 400 tin nhắn: http://betterlogic.com/roger/2012/06/activemq-browse-all-messages – rogerdpack

+4

Bạn sẽ đọc tất cả các thông điệp môi giới tại người tiêu dùng chỉ cần đếm nó, thực sự? – deFreitas

Các vấn đề liên quan