Skip to content

Commit a5ee17d

Browse files
committed
Add attributes to display total number of queues and topics
1 parent e45ee4a commit a5ee17d

File tree

3 files changed

+65
-0
lines changed

3 files changed

+65
-0
lines changed

activemq-broker/src/main/java/org/apache/activemq/broker/jmx/BrokerView.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,11 +280,21 @@ public ObjectName[] getTopics() {
280280
return safeGetBroker().getTopicsNonSuppressed();
281281
}
282282

283+
@Override
284+
public int getTotalTopicsCount() {
285+
return getTopics().length;
286+
}
287+
283288
@Override
284289
public ObjectName[] getQueues() {
285290
return safeGetBroker().getQueuesNonSuppressed();
286291
}
287292

293+
@Override
294+
public int getTotalQueuesCount() {
295+
return getQueues().length;
296+
}
297+
288298
@Override
289299
public String queryQueues(String filter, int page, int pageSize) throws IOException {
290300
return DestinationsViewFilter.create(filter)

activemq-broker/src/main/java/org/apache/activemq/broker/jmx/BrokerViewMBean.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,17 @@ public interface BrokerViewMBean extends Service {
179179
@MBeanInfo("Topics (broadcasted 'queues'); generally system information.")
180180
ObjectName[] getTopics();
181181

182+
@MBeanInfo("Total number of topics")
183+
int getTotalTopicsCount();
184+
185+
182186
@MBeanInfo("Standard Queues containing AIE messages.")
183187
ObjectName[] getQueues();
184188

189+
@MBeanInfo("Total number of queues")
190+
int getTotalQueuesCount();
191+
192+
185193
/**
186194
* Queue Query API, take a look at {@link DestinationsViewFilter} for more information
187195
*/
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package org.apache.activemq.broker.jmx;
2+
3+
import jakarta.jms.*;
4+
import jakarta.jms.Connection;
5+
import org.apache.activemq.*;
6+
import org.apache.activemq.broker.*;
7+
import org.apache.activemq.util.*;
8+
import org.junit.*;
9+
10+
import static org.junit.Assert.assertTrue;
11+
12+
public class BrokerViewTest {
13+
protected BrokerService brokerService;
14+
protected ActiveMQConnectionFactory factory;
15+
protected Connection producerConnection;
16+
17+
protected Session producerSession;
18+
protected MessageConsumer consumer;
19+
protected MessageProducer producer;
20+
protected Queue queue;
21+
22+
@Before
23+
public void setUp() throws Exception {
24+
brokerService = new BrokerService();
25+
brokerService.setPersistent(false);
26+
brokerService.start();
27+
28+
factory = new ActiveMQConnectionFactory(BrokerRegistry.getInstance().findFirst().getVmConnectorURI());
29+
producerConnection = factory.createConnection();
30+
producerConnection.start();
31+
producerSession = producerConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
32+
Queue queue = producerSession.createQueue("testQueue");
33+
producer = producerSession.createProducer(queue);
34+
producer.send(producerSession.createTextMessage("testMessage"));
35+
}
36+
37+
@Test(timeout=120000)
38+
public void testBrokerViewRetrieveTotalQueuesAndTopicsCount() throws Exception {
39+
assertTrue(Wait.waitFor(() -> (brokerService.getAdminView()) != null));
40+
41+
final BrokerView view = brokerService.getAdminView();
42+
// The total number of advisory topics
43+
assert(view.getTotalTopicsCount() == 4);
44+
// The queue created in setup
45+
assert(view.getTotalQueuesCount() == 1);
46+
}
47+
}

0 commit comments

Comments
 (0)