private long getMessageCount(final DurabilityType durability) { List<QueueControl> queues = getQueues(durability); long count = 0; for (QueueControl queue : queues) { count += queue.getMessageCount(); } return count; }
private int getMessageCount(final DurabilityType durability, AddressControl addressControl, ManagementService managementService) { List<QueueControl> queues = getQueues(durability, addressControl, managementService); int count = 0; for (QueueControl queue : queues) { count += queue.getMessageCount(); } return count; }
private int getMessageCount(final DurabilityType durability, AddressControl addressControl, ManagementService managementService) { List<QueueControl> queues = getQueues(durability, addressControl, managementService); int count = 0; for (QueueControl queue : queues) { count += queue.getMessageCount(); } return count; }
/** * Returns number of messages currently in queue * * @param queue queue name * @return number of messages currently in queue */ public long getMessageCount(String queue){ try { return getQueueControl(queue).getMessageCount(); } catch (Exception e) { throw new AsyncException(e); } }
/** * Returns number of messages currently in queue * * @param queue queue name * @return number of messages currently in queue */ public long getMessageCount(String queue){ try { return getQueueControl(queue).getMessageCount(); } catch (Exception e) { throw new AsyncException(e); } }
protected long getMessageCount(QueueControl control) throws Exception { control.flushExecutor(); return control.getMessageCount(); }
protected long getMessageCount(QueueControl control) throws Exception { control.flushExecutor(); return control.getMessageCount(); }
.add("name", nullSafe(subName)) .add("durable", queue.isDurable()) .add("messageCount", queue.getMessageCount()) .add("deliveringCount", queue.getDeliveringCount()) .add("consumers", queue.listConsumersAsJSON())
@Override public JsonObjectBuilder toJson(QueueControl queue) { Queue q = server.locateQueue(new SimpleString(queue.getName())); JsonObjectBuilder obj = JsonLoader.createObjectBuilder().add("id", toString(queue.getID())) .add("name", toString(queue.getName())).add("address", toString(queue.getAddress())) .add("filter", toString(queue.getFilter())).add("rate", toString(q.getRate())) .add("durable", toString(queue.isDurable())).add("paused", toString(q.isPaused())) .add("temporary", toString(queue.isTemporary())) .add("purgeOnNoConsumers", toString(queue.isPurgeOnNoConsumers())) .add("consumerCount", toString(queue.getConsumerCount())) .add("maxConsumers", toString(queue.getMaxConsumers())) .add("autoCreated", toString(q.isAutoCreated())) .add("user", toString(q.getUser())) .add("routingType", toString(queue.getRoutingType())) .add("messagesAdded", toString(queue.getMessagesAdded())) .add("messageCount", toString(queue.getMessageCount())) .add("messagesAcked", toString(queue.getMessagesAcknowledged())) .add("deliveringCount", toString(queue.getDeliveringCount())) .add("messagesKilled", toString(queue.getMessagesKilled())) .add("deliverDeliver", toString(q.isDirectDeliver())) .add("exclusive", toString(queue.isExclusive())) .add("lastValue", toString(queue.isLastValue())); return obj; }
.add("name", nullSafe(subName)) .add("durable", queue.isDurable()) .add("messageCount", queue.getMessageCount()) .add("deliveringCount", queue.getDeliveringCount()) .add("consumers", queue.listConsumersAsJSON())
context.getResult().set(control.getMessageCount()); } catch (RuntimeException e) { throw e;
context.getResult().set(control.getMessageCount()); } catch (RuntimeException e) { throw e;
context.getResult().set(control.getMessageCount()); } else if (SCHEDULED_COUNT.getName().equals(attributeName)) { context.getResult().set(control.getScheduledCount());
@Override public Long getMessageCountForQueue(final String queueName) throws Exception { QueueControl queue = (QueueControl) getActiveMQServer().getManagementService().getResource("queue." + queueName); if (queue != null) { queue.flushExecutor(); return queue.getMessageCount(); } else { return -1L; } }
@Test public void testTempQueueLeak() throws Exception { Connection connection = null; try { connection = factory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); TemporaryQueue temporaryQueue = session.createTemporaryQueue(); temporaryQueue.delete(); Object[] queueResources = server.getManagementService().getResources(QueueControl.class); for (Object queueResource : queueResources) { if (((QueueControl) queueResource).getAddress().equals("ActiveMQ.Advisory.TempQueue")) { QueueControl queueControl = (QueueControl) queueResource; Wait.waitFor(() -> queueControl.getMessageCount() == 0); assertNotNull("addressControl for temp advisory", queueControl); Wait.assertEquals(0, queueControl::getMessageCount); Wait.assertEquals(2, queueControl::getMessagesAdded); } } } finally { if (connection != null) { connection.close(); } } }
@Test public void testTempTopicLeak() throws Exception { Connection connection = null; try { connection = factory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); TemporaryTopic temporaryTopic = session.createTemporaryTopic(); temporaryTopic.delete(); Object[] queueResources = server.getManagementService().getResources(QueueControl.class); for (Object queueResource : queueResources) { if (((QueueControl) queueResource).getAddress().equals("ActiveMQ.Advisory.TempTopic")) { QueueControl queueControl = (QueueControl) queueResource; Wait.waitFor(() -> queueControl.getMessageCount() == 0); assertNotNull("addressControl for temp advisory", queueControl); Wait.assertEquals(0, queueControl::getMessageCount); Wait.assertEquals(2, queueControl::getMessagesAdded); } } } finally { if (connection != null) { connection.close(); } } }
@Test public void testGetScheduledCountOnRemove() throws Exception { long delay = Integer.MAX_VALUE; SimpleString address = RandomUtil.randomSimpleString(); SimpleString queue = RandomUtil.randomSimpleString(); session.createQueue(address, RoutingType.MULTICAST, queue, null, durable); QueueControl queueControl = createManagementControl(address, queue); Assert.assertEquals(0, queueControl.getScheduledCount()); Field queueMemorySizeField = QueueImpl.class.getDeclaredField("queueMemorySize"); queueMemorySizeField.setAccessible(true); final LocalQueueBinding binding = (LocalQueueBinding) server.getPostOffice().getBinding(queue); Queue q = binding.getQueue(); AtomicInteger queueMemorySize1 = (AtomicInteger) queueMemorySizeField.get(q); assertEquals(0, queueMemorySize1.get()); ClientProducer producer = session.createProducer(address); ClientMessage message = session.createMessage(durable); message.putLongProperty(Message.HDR_SCHEDULED_DELIVERY_TIME, System.currentTimeMillis() + delay); producer.send(message); queueControl.removeAllMessages(); Assert.assertEquals(0, queueControl.getMessageCount()); //Verify that original queue has a memory size of 0 assertEquals(0, queueMemorySize1.get()); session.deleteQueue(queue); }
Assert.assertEquals(0, queueControl.getMessageCount()); Assert.assertEquals(0, queueControl.getConsumerCount()); Assert.assertEquals(0, queueControl.getDeliveringCount());
return queue.getMessagesAdded(); case "messageCount": return queue.getMessageCount(); case "messagesAcked": return queue.getMessagesAcknowledged();
return matches(queue.getFilter()); case MESSAGE_COUNT: return matches(queue.getMessageCount()); case CONSUMER_COUNT: return matches(queue.getConsumerCount());