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?
Trả lời
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
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 –
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());
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
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
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