Github user michaelandrepearce commented on a diff in the pull request: https://github.com/apache/activemq-artemis/pull/2398#discussion_r228623226 --- Diff: artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java --- @@ -740,6 +733,56 @@ public String countMessages(final String filterStr, final String groupByProperty } } + @Override + public long countDeliveringMessages(final String filterStr) throws Exception { + Long value = intenalCountDeliveryMessages(filterStr, null).get(null); + return value == null ? 0 : value; + } + + @Override + public String countDeliveringMessages(final String filterStr, final String groupByProperty) throws Exception { + return JsonUtil.toJsonObject(intenalCountDeliveryMessages(filterStr, groupByProperty)).toString(); + } + + private Map<String, Long> intenalCountDeliveryMessages(final String filterStr, final String groupByPropertyStr) throws Exception { + checkStarted(); + + clearIO(); + + Map<String, Long> result = new HashMap<>(); + try { + Filter filter = FilterImpl.createFilter(filterStr); + SimpleString groupByProperty = SimpleString.toSimpleString(groupByPropertyStr); + if (filter == null && groupByProperty == null) { + result.put(null, Long.valueOf(getDeliveringCount())); + } else { + Map<String, List<MessageReference>> deliveringMessages = queue.getDeliveringMessages(); --- End diff -- actually on further looking i see benefit in what you're doing, it keeps management logic and features out the core queue and consumer code, so actually +1 your approach.
---