ActiveMQ get number of consumers listening to a topic from java

12,320

Solution 1

you can use Advisory Messages to get the number of consumers of queues/topics (amongst other things) without using JMX (see ActiveMQ.Advisory.Consumer.Topic, etc)...

Solution 2

I think that the consumer count in the statistics plugin should give you what you want. And I'm fairly sure that the statistics plugin can be enabled in an embedded broker.

http://activemq.apache.org/statisticsplugin.html

Solution 3

I do it simply by fireing this GET: http://localhost:8161/admin/xml/queues.jsp

It returns a list of all queues with registered consumers in XML:

<?xml version="1.0" encoding="UTF-8"?>
<queues>
    <queue name="sauer_test2">
        <stats size="0" consumerCount="0" enqueueCount="0" dequeueCount="0"/>
        <feed>
            <atom>queueBrowse/sauer_test2?view=rss&amp;amp;feedType=atom_1.0</atom>
            <rss>queueBrowse/sauer_test2?view=rss&amp;amp;feedType=rss_2.0</rss>
        </feed>
    </queue>
    <queue name="sauer_test1">
        <stats size="0" consumerCount="1" enqueueCount="1" dequeueCount="1"/>
        <feed>
            <atom>queueBrowse/sauer_test1?view=rss&amp;amp;feedType=atom_1.0</atom>
            <rss>queueBrowse/sauer_test1?view=rss&amp;amp;feedType=rss_2.0</rss>
        </feed>
    </queue>
</queues>

You can see the "consumerCount" attribute and react, accordingly. There is also a get method for getting all consumer-details of a given queue: http://localhost:8161/admin/queueConsumers.jsp?JMSDestination=sauer_test1.

Share:
12,320
Ryan R.
Author by

Ryan R.

Updated on July 19, 2022

Comments

  • Ryan R.
    Ryan R. almost 2 years

    I would like to be able to get the number of consumers listening to a topic from java for an embedded ActiveMQ (5.4.2) broker in the same JVM. Is JMX really the only option here? JMX seems like a bad option since it may be optionally disabled. This post shows how to use JMX to get a list of connections: ActiveMQ: Get list of connections through JMX?

    I would prefer a non-JMX based solution though due to it perhaps being disabled. I guess JMX would be ok if it was still usable from java when disabled. I am just familiar with enabling/disabling it for use with jconsole.

    Am I missing something in the API?

  • Ryan R.
    Ryan R. about 12 years
    I like this (+1) but am going to go with boday for the check since that appears to be a simpler technique for what I am after, i.e. does not require a plugin.